2012-09-07 79 views
6

Tôi muốn ứng dụng web của mình chạy trong cửa sổ không có thanh thực đơn, thanh địa chỉ, v.v. Tôi có trang Default.html và trong trang này, tôi nhấp vào nút "Chạy ứng dụng" lần đầu tiên mở ứng dụng của tôi trong một cửa sổ khác sử dụng window.open và sau đó đóng cửa sổ hiện tại bằng cách mở "AutoClose.html" sử dụng window.open với _self tham sốĐóng các cửa sổ không được mở bằng tập lệnh bằng cách sử dụng javascript

default.html

<html> 
<head> 
<script type="text/javascript"> 
    function runApp() { 
     // Open my application 
     window.open('Application.html', null, 'status:no;dialogHide:true;help:no;scroll:yes;center=yes;'); 

     // Close this window 
     window.open('AutoClose.html', '_self'); 
    } 
</script> 
</head> 
<body> 
    <input type="button" value="Run Application" onclick="runApp();" /> 
</body> 
</html> 

AutoClose.html

<html> 
<head> 
<script type="text/javascript"> 
    window.close(); 
</script> 
</head> 
<body></body> 
</html> 

Ứng dụng của tôi phải hỗ trợ IE, Firefox và Chrome và mã của tôi hoạt động tốt trên IE và Chrome nhưng không thể đóng cửa sổ đầu tiên trên Firefox vì cảnh báo "Scripts có thể không đóng cửa sổ không được mở bằng tập lệnh" . Trên Firefox, nó sẽ mở ra các AutoClose.html nhưng window.close() cuộc gọi trong trang này chỉ gây ra các "Scripts có thể không đóng cửa sổ không được mở bởi kịch bản" cảnh báo và cửa sổ không đóng cửa. Nhân tiện cửa sổ ứng dụng của tôi được mở mà không có bất kỳ vấn đề nào (không có vấn đề gì về điều đó).

Dường như việc sử dụng window.open() với mẹo tham số _self không hoạt động đối với Firefox. Vì mục tiêu của tôi là để chạy các ứng dụng trong một cửa sổ mà không cần thanh menu, thanh địa chỉ, vv

  1. Có cách nào để ẩn thanh địa chỉ, thanh menu mà không sử dụng window.open() (ít nhất là cho Firefox)? Sau đó, tôi sẽ không cần chạy window.close()
  2. Có bất kỳ cài đặt nào để chặn "Scripts có thể không đóng cửa sổ không được mở bởi tập lệnh" cảnh báo trên Firefox không? Cài đặt "Cho phép tập lệnh đóng cửa sổ không được mở bằng tập lệnh" sẽ tuyệt vời (:
  3. Có cách nào để tạo window.close() hoạt động cho "cửa sổ không được mở bằng tập lệnh bằng javascript" trên Firefox không?
  4. Hoặc , là có bất kỳ lời đề nghị khác (:

Cảm ơn trước

UPDATE:. Đây là một ứng dụng ngân hàng và tôi chỉ là một không phát triển ra quyết định Nói cách khác một số loại phân tích muốn ứng dụng. làm việc theo cách này. Và tôi không hỏi nó. Vì vậy, "toàn bộ điều bạn đang cố gắng làm là hoàn toàn wron g "câu trả lời sẽ không thực sự hữu ích.

+1

Afaik bạn là SOL - nhưng tôi cũng gặp khó khăn khi thấy bất kỳ nhu cầu nào về điều này. Nếu bạn từng thành công, tôi sẽ không bao giờ một lần nữa ghé thăm trang DOS của bạn – mplungjan

+2

tư vấn cá nhân, đừng làm "chạy trong một cửa sổ không có thanh menu, thanh địa chỉ". Đây chỉ là khó chịu như địa ngục. Những thanh này hữu ích và tôi hầu như không thấy bất kỳ lý do chính đáng nào để tước đoạt người dùng của bạn khỏi các chức năng của họ. – BiAiB

Trả lời

6

Bạn không thể đóng cửa sổ hiện tại trong firefox vì bạn không mở nó. Việc bạn tải AutoClose.html vào đó là không quan trọng.

Nhưng toàn bộ doanh nghiệp này có cửa sổ là vô nghĩa. Hầu hết mọi người có trình duyệt của họ được thiết lập để mở cửa sổ mới trong một tab mới, và bạn không thể ngăn chặn thanh thực đơn vv trong một cửa sổ tab.

Tôi, cá nhân, sẽ rất khó chịu nếu bạn đóng cửa sổ của tôi chỉ vì tôi đã sử dụng ứng dụng của bạn.

Đó có thể là cửa sổ duy nhất người dùng mở - trong trường hợp đó bạn vừa đóng trình duyệt của mình. Có thể họ muốn nhấn lại và đóng tab sẽ làm phiền họ.

Lỗi này từ firefox là chính xác và nếu nó hoạt động trong Chrome, đó là lỗi nghiêm trọng và bạn nên báo cáo lỗi đó.

+0

Như tôi đã nói ở trên mục tiêu của mình là "chạy ứng dụng trong cửa sổ không có thanh thực đơn, thanh địa chỉ, v.v." không đóng cửa sổ. –

+0

Vì vậy, sau đó chỉ cần mở một cửa sổ mới và để cửa sổ hiện tại một mình. Vấn đề là gì? – Ariel

+0

Beacuse trang hiện tại là trang đăng nhập. Và mọi người sẽ rất tức giận nếu nó bị bỏ lại sau khi đăng nhập. –

1

Vấn đề cơ bản là những gì yêu cầu-setter của bạn muốn bạn phải làm là chặn một cách rõ ràng bởi Firefox:

  1. Không có cách nào để ẩn giao diện người dùng trong cửa sổ trình duyệt hiện tại của người dùng, bởi vì nó sử dụng thù địch và một công cụ yêu thích của những kẻ lừa đảo.
  2. Không có cách nào để đóng cửa sổ hiện tại của người dùng khỏi tập lệnh, mất tất cả lịch sử phiên của người dùng trong quá trình.

Về cơ bản, người dùng có những thứ khác trong trình duyệt chứ không chỉ là điều ngân hàng của bạn. Vì vậy, giả sử nếu không là nhiều hơn hoặc ít hơn cam chịu thất bại.

Có cách nào bạn có thể đẩy lùi các yêu cầu không hợp lý không?

+0

Sẽ tốt hơn nếu trình duyệt cho phép tùy chỉnh nhiều hơn về mức độ tin cậy. Tôi muốn người dùng có thể nói một cái gì đó như "Tôi tin tưởng trang web này để cho phép nó làm bất cứ điều gì nó muốn với javascript" –

+0

Ngoại trừ tất nhiên không có người dùng sane nên tin tưởng một trang web ngân hàng điển hình theo cách đó ... Đặc biệt, nếu một người dùng tin cậy trang web được mô tả ở trên, trang web sau đó sẽ tiến hành lạm dụng sự tin tưởng đó bằng cách hủy lịch sử phiên của người dùng! –

+0

Vì đó là một ứng dụng web mạng nội bộ được sử dụng bởi các nhân viên của ngân hàng xem xét các loại kịch bản này có vẻ quá hoang tưởng. –

5

đơn giản,

open(location, '_self').close(); 
+0

Stonking. Giải pháp tuyệt vời. –

+7

Điều này không đóng cửa sổ, nó chỉ xóa sạch nội dung của trang. – Zerubbabel

0

này đã làm việc cho tôi.

Tôi đã sử dụng nó để đóng cửa sổ khi nhấp vào nút trong Hộp thoại giao diện người dùng jQuery.

open(location, '_self').close(); 
Các vấn đề liên quan