读取 iframe 重定向(同域)

Posted

技术标签:

【中文标题】读取 iframe 重定向(同域)【英文标题】:Read iframe redirect (same domain) 【发布时间】:2016-08-11 21:43:40 【问题描述】:

我正在编写一个 chrome 扩展,因此我遇到了使用非跨域 iframe 的特殊情况,无法更改框架中显示的页面。

当用户在 iframe 中单击某个链接时,我想运行一些 javascript。单击该链接的默认行为是加载页面 targetpage.com。我认为读取 iframe 中被点击的特定元素是不可能或容易的

作为一种解决方法,我想我可以检查 iframe 是否重新加载,指向 targetpage.com,然后执行操作。

注意:动作完全在父页面中,假设我只是想触发一个警报框。

我知道如何在 iframe 加载时触发 JavaScript。我的三个问题是:

1) 如何查看 iframe 的 url?

2) 有没有办法在加载 targetpage.com 之前检查 iframe、url。以斯帖比之后?

3) 有更好的解决方案吗?

【问题讨论】:

【参考方案1】:

你可以在后台监听webNavigation.onBeforeNavigate,当导航即将发生时触发,你可以在回调参数中得到urlframeId

【讨论】:

【参考方案2】:

这可能不是最好的答案,因为我没有玩过这么多。

Chrome 有一个 webNavigation API,看起来可能对您的扩展程序派上用场。

但是,如果您想获取当前所在的域,您可以使用...

document.domain

如果您位于该域的子目录中,您可以使用...获取它

window.location

它也适用于向 url 添加哈希。

如果你想要不带哈希的 url,你可以使用 document.referrer 或者如果你觉得 hacky,你可以这样做......

var str = window.location
var res = str.toString().split(str.hash)
document.body.innerhtml = res

【讨论】:

以上是关于读取 iframe 重定向(同域)的主要内容,如果未能解决你的问题,请参考以下文章

web打印页面加载数据耗时

web打印页面加载数据耗时

iframe/Popup 重定向开启器窗口

提交表单后的 IE-8 Iframe 页面重定向问题

在网站前面使用反向代理将 http 请求从 iframe 中重定向到网站

解决iframe重定向让父级页面跳转