2011-08-14 57 views
8

Tôi đang cố mở một cửa sổ bật lên để cho phép người dùng xác thực bằng twitter mà không phải rời khỏi trang họ đang xem. Tôi đã thấy kỹ thuật này được sử dụng trên web, đặc biệt là với ứng dụng nhận xét Disqus. Tuy nhiên, tôi chỉ có thể nhận được hai kết quả, hoặc là một cửa sổ 'Popup bị chặn' hoặc thậm chí không có gì xảy ra.cửa sổ bật lên bị chặn trong trình xử lý thành công ajax

Tôi đã thử sử dụng các phương pháp được nêu herehere. Làm thế nào tôi có thể sửa lỗi này?

Mã của tôi hiện trông giống như:

var windowSizeArray = [ "width=200,height=200", 
          "width=300,height=400,scrollbars=yes" ]; 
var url = $('.twitter_popup').attr("href"); 
var windowName = $('.twitter_popup').attr("name"); 
var windowSize = windowSizeArray[$('.twitter_popup').attr("rel")]; 
window.open(url, windowName, windowSize); 
+0

Bạn có thể đăng mã của mình không? – ShankarSangoli

+0

Mô hình bảo mật bật lên chỉ cho phép các cửa sổ bật lên được kích hoạt bởi sự kiện của người dùng, ví dụ: sự kiện nhấp chuột. Bạn có thể chia sẻ thêm ngữ cảnh để xác minh rằng bạn đang làm điều đó không? –

Trả lời

20

Trình chặn cửa sổ bật lên trên trình duyệt chặn các cửa sổ bật lên khi mã đang thực thi trong ngữ cảnh thực thi tập lệnh.

Ví dụ: Nếu chúng tôi mở cửa sổ mới trên một neo, trình chặn bật lên sẽ không chặn cửa sổ đó nhưng nếu chúng tôi cố mở một cửa sổ mới bằng cách sử dụng setTimeout, bạn sẽ thấy trình chặn cửa sổ bật lên sẽ chặn điều này. Đó là vì khi hết thời gian chờ, ngữ cảnh hiện tại là ngữ cảnh thực thi tập lệnh thay vì hành động của người dùng. Đây là hành vi tương tự khi chúng ta cố mở một cửa sổ mới trong trình xử lý gọi lại ajax.

Tôi nghĩ bạn đang ở trong tình huống tương tự như vậy.

Sống example

Nếu vì một số lý do bạn muốn mở cửa sổ bật lên trong xử lý thành công ajax bản thân thì bạn có thể đạt được nó bằng cách thực hiện cuộc gọi ajax đồng bộ. Cửa sổ bật lên sẽ không bị chặn.

+0

Đây là vấn đề. Tôi đã mở cửa sổ trong hành động 'thành công' của cuộc gọi ajax. Tôi cố định nó bằng cách mở cửa sổ, và thực hiện ajax từ bên trong cửa sổ để thay thế. Cảm ơn nhiều! – providence

+1

+1 để đề cập đến bối cảnh thực thi – Mrchief

+0

Cửa sổ bật lên không bị chặn trong chrome hoặc firefox mới nhất bằng cách sử dụng setTimeout – Orbit

0

vấn đề có thể nằm trong các lĩnh vực sau ... 1. windowSizeArray chỉ chứa một yếu tố duy nhất. 2. mã $ ('. Twitter_popup'). Attr ("rel") có thể cung cấp cho bạn một số kết quả khác so với mong đợi bởi vì tên lớp được sử dụng làm công cụ chọn

+0

Cửa sổSizeArray thực sự chứa 2 phần tử, nhìn kỹ. – Ryan

Các vấn đề liên quan