Tôi vừa phát hiện ra rằng window.opener
không có sẵn trong cửa sổ được mở qua window.open
nếu URL mới là tên miền chéo, trong IE. How do I detect window opener in IELàm cách nào để nhận được bảo mật giữa các cửa sổ.opener
Điều này sẽ xảy ra nếu cửa sổ bắt đầu trong miền của tôi, thoát khỏi đó và sau đó quay lại miền của tôi. Tôi đang cố gắng để có một đăng ký xã hội (facebook, google, vv) trong cửa sổ bật lên. Khi nó hoàn thành nó sẽ đóng cửa sổ mới và chuyển hướng mở.
Tôi biết rằng Soundcloud đang tắt chức năng này, nhưng tôi không biết làm cách nào. Tôi thấy sự thay đổi URL từ họ đến Facebook, và sau đó đóng lại.
Sau khi chuyển hướng trở lại trang web của tôi từ bên thứ 3 tôi chạy này:
var data = {
type : 'complete',
destination : '<?= $destination; ?>'
};
if (window.opener) {
window.opener.postMessage(JSON.stringify(data), '*');
window.close();
}
else {
alert("Unable to find window");
}
Nó cảnh báo trong IE, mặc dù cửa sổ ban đầu là tên miền của tôi, sau đó chuyển hướng đến FB, sau đó chuyển hướng trở lại với tôi . Tôi nghĩ có thể kể từ khi tôi mở trang web của tôi và chuyển hướng ngay lập tức từ PHP có thể là một vấn đề. Tuy nhiên ngay cả khi tôi mở trang web của mình, đã làm window.location.href = 'facebookssite.com'
nó vẫn bị khiếu nại khi trở về.
LƯU Ý
đăng ký xã hội không làm việc cho google, FB, vv trong một iframe
. Tôi tin rằng họ không cho phép họ vì lý do an ninh.
Tôi thích ý tưởng này. Tôi sẽ quay lại khi tôi quay lại văn phòng. –
@Noseratio: Giải pháp của bạn hoạt động tốt nếu url của miền khác được mở trong cửa sổ nhưng làm cách nào chúng tôi có thể sửa đổi mã của bạn để xử lý tình huống trong đó Facebook xác thực người dùng và chỉ cần mở url được chuyển hướng trong cửa sổ. Trong trường hợp đó leftDomain flag là false, mặc dù có một số chuyển hướng nội bộ đã xảy ra. –
@dark_shadow, tôi khuyên bạn nên đặt câu hỏi này như một câu hỏi riêng và liên kết câu hỏi này với câu hỏi đó. – Noseratio