2012-01-09 31 views
6

Tôi đang tạo ứng dụng liên quan đến xác thực thông qua bên thứ ba. Để làm cho quá trình không chuyển hướng ứng dụng thực tế, tôi mở một cửa sổ mới, sau đó thực hiện xác thực và trở về cửa sổ chính sau khi thành công.window.opener là vô ích sau khi chuyển hướng trong cửa sổ bật lên (JavaScript)

Điều này không, tuy nhiên, cũng như kế hoạch. Khi cửa sổ bật lên chuyển hướng đến bên thứ ba và quay lại, window.opener được null. Nó vẫn có thể đóng cửa sổ bật lên bởi window.close() nhưng tôi cũng cần phải làm mới đăng nhập trong khu vực trong cửa sổ chính, như thế này:

window.opener.check_auth_status(); 

Tôi thực sự hy vọng có một cách để sửa lỗi này, ví dụ ràng buộc một chức năng để đóng cửa sổ bật lên trong cửa sổ chính? Làm mới toàn bộ trang sẽ rất cần thiết.

Một cách là set an interval to main window kiểm tra xem cửa sổ bật lên có được đóng hay không, nhưng điều này có vẻ khó sử dụng.

+0

chính xác điều đó đang làm việc cho tôi. Tôi mở một popup để twitter/facebook, sau khi họ chuyển hướng popup trở lại tôi gọi window.opener để làm mới. Có thể gọi lại của bạn là tên miền/cổng khác nhau, bởi vì chỉ hoạt động cho cùng một trang để truy cập trình mở theo cách đó. – webstrap

Trả lời

9

Bạn có một vài tùy chọn mà có thể hoặc không có thể làm việc trong các phiên bản mới nhất của trình duyệt do cập nhật bảo mật

1) kiểm tra xem cửa sổ đã bị đóng từ mở - không khó sử dụng và thực sự an toàn nhất

2) cung cấp cho các mở một tên

window.name="myMainWindow"; 

và trong cửa sổ bật lên (kịch bản từ miền CÙNG) - bình thường không nên mở một cửa sổ mới hoặc thay đổi nội dung

var handle = window.open("","myMainWindow"); 
handle.check_auth_status(); 

3) sử dụng một iFrame trong popup và khi bạn muốn truy cập mở tỷ số, sử dụng top.opener

+2

Tôi yêu bạn ..... –

+1

Trong một cách anh em tôi hy vọng :) – mplungjan

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