gpt4 book ai didi

javascript - 如何知道 window.opener 是否来 self 的网页?

转载 作者:行者123 更新时间:2023-11-30 18:40:07 26 4
gpt4 key购买 nike

我有一个登录弹出窗口,它使用 window.opener.location.href = XXX 修改其父页面。代码是这样的。

  if (window.opener) {
window.opener.location.href = window.location.href;
self.close();
}

这个问题是,如果有人有一个指向我的网页的链接,比如说,一个来自电子邮件的链接,这个代码将被执行并且父级是电子邮件客户端。这将引发 javascript 错误,因为我正在尝试更改不属于我的网页。(在 Chrome 中,它显示“不安全的 JavaScript 尝试使用 URL 访问框架”)

我想知道是否有办法确定 window.opener 是否来 self 的网页。

最佳答案

不是万能的,但是您可以在您的主页上定义一些功能,然后测试它是否存在以检查它是否是您的 页面?包装在 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 的对话框只是一种简单的方法)。

话说回来,,为什么人们会直接链接到您的登录页面?假设它们可能,您要测试是否存在正确父窗口的时间点是首次显示登录时,而不是在用户输入详细信息并尝试提交之后。

关于javascript - 如何知道 window.opener 是否来 self 的网页?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7100296/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com