Chúng tôi đã gặp vấn đề tương tự này và tìm kiếm xung quanh SO để có câu trả lời. Những gì chúng tôi tìm thấy hoạt động trong hoàn cảnh của chúng tôi và sự khôn ngoan chưng cất như sau:
Sự cố liên quan đến trình chặn cửa sổ bật lên ngăn chặn cửa sổ chương trình mở ra. Trình duyệt cho phép cửa sổ mở ra từ các nhấp chuột thực tế của người dùng xảy ra trên chuỗi chính. Tương tự, nếu bạn gọi window.open trên chủ đề chính nó sẽ hoạt động, như đã nói ở trên. Theo câu trả lời này trên Open a URL in a new tab (and not a new window) using JavaScript nếu bạn đang sử dụng cuộc gọi Ajax và muốn mở cửa sổ thành công, bạn cần đặt async: false
hoạt động vì điều đó sẽ giữ mọi thứ trên chuỗi chính.
Chúng tôi không thể kiểm soát cuộc gọi Ajax của chúng tôi như thế, nhưng tìm thấy một giải pháp khác hoạt động vì những lý do tương tự. Cảnh báo, nó là một chút hacky và có thể không thích hợp cho bạn đưa ra những hạn chế của bạn. Được phép nhận xét về một câu trả lời khác trên Open a URL in a new tab (and not a new window) using JavaScript bạn mở cửa sổ trước khi gọi setTimeout
và sau đó cập nhật nó trong chức năng bị trì hoãn. Có một vài cách để làm điều này. Giữ tham chiếu đến cửa sổ khi bạn mở cửa sổ, w = window.open...
và đặt w.location
hoặc mở với mục tiêu, window.open('', 'target_name')
, trong chức năng bị trễ mở trong mục tiêu đó, window.open('your-url', 'target_name')
và dựa vào trình duyệt để giữ tham chiếu.
Tất nhiên, nếu người dùng có cài đặt của họ để mở liên kết trong cửa sổ mới, điều này sẽ không thay đổi điều đó, nhưng đó không phải là vấn đề đối với OP.
Hành vi này xảy ra trong trình duyệt nào? – shanet
Hy vọng đây là _ của bạn [answer] (http://stackoverflow.com/questions/2601761/change-browser-settings-by-script) _. –
tất cả các trình duyệt. trang thử nghiệm
– user2819018