读取 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,当导航即将发生时触发,你可以在回调参数中得到url
和frameId
。
【讨论】:
【参考方案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 重定向(同域)的主要内容,如果未能解决你的问题,请参考以下文章