在打开的弹出窗口的位置更改时得到通知

阿列克谢·斯特拉赫(Alexey Strakh)

我正在网站上实施外部OAuth身份验证。在按钮上单击“我正在使用Facebook身份验证页面打开弹出窗口”。现在,我需要知道何时完成身份验证才能读取OAuth令牌并关闭弹出窗口。

click: function () {
   var popup = window.open(url, title, '<options>');
   popup.onload = function () {
       //1. if url contains token - finish OAuth authentication
       //2. close popup

       //but 'onload' doesn't work for external domains
   }
   return false;
},

当我尝试使用轮询技术进行访问时,我在提示以下安全错误:

未捕获的SecurityError:被阻止与原籍“帧https://some_app_host_not_the_same_as_following.com从访问与原点”一个帧“ https://some_auth_host_which_works_with_facebook.com ”。协议,域和端口必须匹配。

我怎样才能做到这一点?

正式的

如果您可以控制弹出窗口的内容,请在此处处理窗口的卸载事件,并通过opener属性通知原始窗口,首先检查打开器是否已关闭。请注意,这在Opera中并不总是有效。

window.onunload = function() {
    var win = window.opener;
    if (win.closed) {
        win.someFunctionToCallWhenPopUpCloses();
    }
};

由于每当用户离开弹出窗口中的页面而不仅仅是在关闭窗口时,都会触发unload事件,因此您应该在someFunctionToCallWhenPopUpCloses中检查弹出窗口是否已真正关闭:

var popUp = window.open("popup.html", "thePopUp", "");
function someFunctionToCallWhenPopUpCloses() {
    window.setTimeout(function() {
        if (popUp.closed) {
            alert("Pop-up definitely closed");
        }
    }, 1);
}

如果您无法控制弹出窗口的内容,或者您​​的目标浏览器之一不支持unload事件,则可以在主窗口中使用某种轮询解决方案。调整间隔以适合。

var win = window.open("popup.html", "thePopUp", "");
var pollTimer = window.setInterval(function() {
    if (win.closed !== false) { // !== is required for compatibility with Opera
        window.clearInterval(pollTimer);
        someFunctionToCallWhenPopUpCloses();
    }
}, 200);

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在打开的弹出窗口的位置更改时得到通知

来自分类Dev

链接样式很重要:链接在打开弹出窗口时得到一个选择框

来自分类Dev

在单击按钮的位置打开弹出窗口

来自分类Dev

更改Xubuntu中的弹出窗口(通知)样式

来自分类Dev

在打开另一个弹出窗口时如何隐藏活动弹出窗口?

来自分类Dev

Cinnamon:如何更改弹出通知的位置?

来自分类Dev

Monotouch-网络状态更改时得到通知

来自分类Dev

当WPF中的静态属性更改时得到通知

来自分类Dev

如何监视网络类型并在发生更改时得到通知

来自分类Dev

Monotouch-当网络状态更改时得到通知

来自分类Dev

如何监视网络类型并在发生更改时得到通知

来自分类Dev

更改嵌入式弹出窗口的位置

来自分类Dev

Firebase数据更改时,从前台通知打开活动

来自分类Dev

传单:在光标位置而不是LineString中心打开弹出窗口

来自分类Dev

Xamarin通知弹出窗口

来自分类Dev

如何在打开弹出窗口时获取当前的标签URL [无标签权限]

来自分类Dev

JQueryValidate和JqueryMobile验证错误出现在打开的弹出窗口中

来自分类Dev

Twitter引导程序popover在打开新的弹出窗口之前将其全部关闭

来自分类Dev

隐形打开的弹出窗口

来自分类Dev

如何在MFC中更改弹出窗口的默认位置

来自分类Dev

当C ++中的I2C值更改时得到通知

来自分类Dev

URL哈希值更改时,刷新用window.open打开的打开的窗口

来自分类Dev

表单验证弹出窗口消息仅在Angularjs中进行更改时才有效

来自分类Dev

如何自动关闭日期弹出窗口并在选定元素更改时隐藏div?

来自分类Dev

在引导弹出窗口中进行更改时选择不触发

来自分类Dev

更改弹出通知超时?

来自分类Dev

WebSocket在打开连接时得到404

来自分类Dev

将鼠标悬停在打开的弹出窗口上,将鼠标悬停在关闭弹出窗口上,将鼠标悬停在弹出菜单上不应关闭弹出窗口

来自分类Dev

jQuery Mobile弹出窗口/通知

Related 相关文章

  1. 1

    在打开的弹出窗口的位置更改时得到通知

  2. 2

    链接样式很重要:链接在打开弹出窗口时得到一个选择框

  3. 3

    在单击按钮的位置打开弹出窗口

  4. 4

    更改Xubuntu中的弹出窗口(通知)样式

  5. 5

    在打开另一个弹出窗口时如何隐藏活动弹出窗口?

  6. 6

    Cinnamon:如何更改弹出通知的位置?

  7. 7

    Monotouch-网络状态更改时得到通知

  8. 8

    当WPF中的静态属性更改时得到通知

  9. 9

    如何监视网络类型并在发生更改时得到通知

  10. 10

    Monotouch-当网络状态更改时得到通知

  11. 11

    如何监视网络类型并在发生更改时得到通知

  12. 12

    更改嵌入式弹出窗口的位置

  13. 13

    Firebase数据更改时,从前台通知打开活动

  14. 14

    传单:在光标位置而不是LineString中心打开弹出窗口

  15. 15

    Xamarin通知弹出窗口

  16. 16

    如何在打开弹出窗口时获取当前的标签URL [无标签权限]

  17. 17

    JQueryValidate和JqueryMobile验证错误出现在打开的弹出窗口中

  18. 18

    Twitter引导程序popover在打开新的弹出窗口之前将其全部关闭

  19. 19

    隐形打开的弹出窗口

  20. 20

    如何在MFC中更改弹出窗口的默认位置

  21. 21

    当C ++中的I2C值更改时得到通知

  22. 22

    URL哈希值更改时,刷新用window.open打开的打开的窗口

  23. 23

    表单验证弹出窗口消息仅在Angularjs中进行更改时才有效

  24. 24

    如何自动关闭日期弹出窗口并在选定元素更改时隐藏div?

  25. 25

    在引导弹出窗口中进行更改时选择不触发

  26. 26

    更改弹出通知超时?

  27. 27

    WebSocket在打开连接时得到404

  28. 28

    将鼠标悬停在打开的弹出窗口上,将鼠标悬停在关闭弹出窗口上,将鼠标悬停在弹出菜单上不应关闭弹出窗口

  29. 29

    jQuery Mobile弹出窗口/通知

热门标签

归档