【问题标题】:Blocking Popups from same domain阻止来自同一域的弹出窗口
【发布时间】:2014-06-13 15:05:14
【问题描述】:

我正在使用 JavaScript 代码检查用户浏览器是否启用或禁用了弹出窗口阻止程序,这在除 IE 之外的所有浏览器中都可以正常工作。 IE 似乎没有阻止从同一域打开的弹出窗口。有什么建议吗?

var popUpStr;
var popUp = window.open("Name of popup which has same domain as the main windown", "", 'width=150, height=150, left=24, top=24, scrollbars, resizable');
if (popUp === null || typeof (popUp) == 'undefined' || typeof (popUp.location.hash) != "string" || (popUp === null && popUp.outerWidth === 0) || (popUp !== null && popUp.outerHeight === 0)) {
    popUpStr = 'Popup Blocker is enabled';
} else {
    popUp.close();
    popUpStr = 'Popup Blocker is not enabled';
}

【问题讨论】:

  • var popUpStr; var popUp = window.open("与主窗口同域的弹出窗口名称", "", 'width=150, height=150, left=24, top=24, scrollbars, resizable'); if (popUp === null || typeof(popUp)=='undefined' || typeof(popUp.location.hash)!= "string" || (popUp === null && popUp.outerWidth === 0) || (popUp !== null && popUp.outerHeight === 0) ) { popUpStr = '弹出窗口拦截器已启用'; } 其他 { popUp.close(); popUpStr = '弹出窗口拦截器未启用'; }
  • 一般来说,来自同一域的弹出窗口是您不想无论如何都想阻止的那种弹出窗口...
  • 请通过编辑将代码发布到您的问题中,而不是在评论中。我已经为你更新了你的问题。

标签: javascript


【解决方案1】:

您的代码在 IE11 的 JSFiddle 中对我来说很好用。也许你应该缩小浏览器版本。

此外,查看这些主题相同的主题,您还会发现更优雅的 jQuery 解决方案:

【讨论】:

  • 我正在调试 JavaScript,当我打开弹出窗口阻止程序时,我看到 window.open 不为空。它总是进入 else 块。
  • 在您的布尔表达式中,您声明了转到 if 块的五个原因。 popUp !== null && popUp.outerHeight === 0 部分是唯一强制 if 块甚至 popUp 不为空的部分。对于这个术语,IE 中 popUp.outerHeight 的值是多少?也许你找到了另一个标准?
  • popUp.outerHeight 和 popUp.outerWidth 出错了。它们适用于 chrome 浏览器
猜你喜欢
  • 2011-05-26
  • 2021-10-01
  • 2020-05-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多