如何知道如果窗口.Opener来自我的网页
How to know if window.opener comes from my webpage?
我有一个登录弹出修改它的父页面与窗口。代码是这样的:
if (window.opener) {
window.opener.location.href = window.location.href;
self.close();
}
这个问题是,如果有人有一个链接到我的网页,就像让我们说,从电子邮件的链接,这段代码将被执行,父母是电子邮件客户端。这将抛出一个javascript错误,因为我试图改变一个网页,不是我的。(在Chrome浏览器中,它说"不安全的JavaScript试图访问框架与URL")
我想知道是否有办法让我知道窗户是否坏了。
不是防弹的,但是您可以在主页上定义一些函数,然后测试它是否存在,以检查它是否您的页面吗?包装在一个try/catch,以避免其他错误,当页面不是你的?
// on parent, make this function name something unlikely to appear
// on other pages
function checkParentIdentity() { return "some ID string"; }
// on popup
try {
if (window.opener
&& window.opener.checkParentIdentity
&& window.opener.checkParentIdentify() === "some ID string") {
window.opener.location.href = window.location.href;
self.close();
}
} catch(e) {
// error message here
}
话虽如此,我并不是说它是一个好的想法,只是一个可能适合您现有代码的想法。如果是我,我会将location.href
更新移动到父函数上,然后让子窗口调用函数来告诉父函数更新自己-您可以对我发布的代码进行最小的更改。但是如果是我的话,当我可以在主页上做一个动态对话框覆盖的时候,我可能根本不会使用弹出窗口(jQuery的对话框只是一个简单的方法来做到这一点)。
说了,为什么人们要直接链接到你的登录页面呢?假设它们可能存在,那么您想要测试是否存在正确的父窗口的点是在登录第一次显示时,而不是在用户输入详细信息并尝试提交之后。
相关文章:
- 为什么不't Javascript对我的输入值进行了一些重新检查
- 可以't让我的if语句处理js中的html表单输入
- 我的单元测试选项是什么
- 将输入字段中的文本提交到我的数据库,同时将其添加到我的列表中
- 我的职位回报太快了,如何做出承诺
- 我的jQuery插件参数没有正确启动,遇到了问题
- 如何识别我的网站中的慢速设备
- 如何将JSON数据导入我的ejs模板
- JQuery添加元素需要在我的js之前再次添加JQuery脚本
- 知道为什么我的旋转木马不会自动更改图片吗
- 我的模板未被解析
- 无法将数据从firebase获取到我的html页面
- 角度图表;t显示在我的页面中
- 我的AngularJS表达式没有'不起作用
- 将电视直播频道从网站嵌入我的网站
- /undefined在我的404错误日志中多次出现
- 为什么我的d3.jsselectAll+过滤器没有过滤
- 显示来自我的控制器的错误消息,并重定向回我的主页
- 数据表不加载时,我重定向我的页面使用自我.do_action在odoo(openERP7) qweb屏幕
- Javascript:如果我已经使用了一个外部函数,为什么我还需要定义一个自我调用的匿名函数?