如何确定我的域已打开弹出窗口?

时间:2018-07-11 09:22:48

标签: javascript popup

因此有一个网址,如:

https://subdomain.domain.com/popuppage

我正在使用以下方法在弹出窗口中打开它:

window.open("https://subdomain.domain.com/popuppage", null, "height=600,width=800")

现在,单击第三方网站的链接后,将在新选项卡中打开同一页面。问题是我想确定它是由我或第三方网站打开的。有什么办法吗?

我尝试检查window.opener属性,但是在两种情况下,我都得到window.opener,并且由于CORS政策,浏览器不允许我访问window.opener的任何属性。

1 个答案:

答案 0 :(得分:0)

您可以尝试访问window.opener.location.href。如果有效,则它是同一个域(因此没有第三方),如果失败,则极有可能不是(因此第三方)。

  window.onload = function(){
    var _CORS = null;

    try{
      window.opener && window.opener.location.href;
      _CORS = false
      //REM: Edit according to comment
      /*
      _CORS = !(
          !window.opener ||
          (window.opener.location.href && window.location.host === window.opener.location.host)
      )
      */
    }
    catch(err){
      _CORS = true
    };

    alert('Third party: ' + _CORS)
  };

将此内容放在https://subdomain.domain.com/popuppage的{​​{1}}中,或者您想对其进行进一步评估。