location.href not changing iframe src



我需要检查iframe src是否有来自父页面的更改。

$('myiframe').attr('src');

工作正常,但当我通过iframe 中的javascript更改url的哈希时

location.href += '#hash';

我可以从iframe检查位置.href看到它发生了变化,但从父文档来看,src似乎没有变化。有什么帮助吗?

编辑

由于包含页和iframe在不同的域上,我必须使用src属性来检查它,并且我不能访问iframelocation.href属性。

散列参数不在属性位置。ref,请尝试

location.hash = 'hash';

我怀疑您是否可以简单地从父javascript中执行此操作。因为那样我就可以:

  1. 创建一个带有隐藏iframe的页面。(说http://mysite.com/fake)
  2. 在iframe中,在某个网站的登录过程中打开一些中间页面(类似于https://accounts.google.com/redirlogin)
  3. 如果存在用于儿童的cookie&如果没有足够的注意,框架内的页面将重定向到实际的网站,用户登录
  4. 从父页面,我可以检查它经过的所有中间url,这些url基本上可以包含一些会话ID

注意:我在工作日也做过类似的事情&用于重定向到orkut的"中间登录页"。这是为我想要实现的自动登录功能而做的。然而,我无法在父页面中获得任何信息。

注:

  1. 我可能完全错了,但我觉得从安全角度来看,从纯父端代码来看,这是不可能的。孩子应该通知家长
  2. 它可能确实适用于域内网站

跨域框架可以设置但不能读取彼此的位置。(为什么?好吧,读取彼此的位置会违反同源政策,可能会泄露URL中出现的敏感信息。不过,我不确定为什么允许设置它们。历史上,网站使用导航父页面到framebust的功能,但这已经不那么重要了。)

因此,如果您正试图使用哈希片段进行跨域帧通信(由于某种原因,您无法使用postMessage),那么执行此操作的方法是让内部帧使用window.top.location.href更改其父帧位置的哈希片段。然后,父页面应该每隔一段时间检查其哈希片段的更改。

这是我找到的一个演示。

此片段适用于youtube剪辑、pdf和html页面(除非目标网站故意屏蔽帧)

链接将呈现文档"htp://someurl'转换为div id="someID"中的匿名iframe

`<a href="htp://someurl" onclick="renderLink('someID');return false;" title="Click to view external document">view external document</a>`
`function renderLink() {`   
`if (!e) var e = window.event;`
`var pdfsrc = e.srcElement.getAttribute('href');`
`var $pdfdiv = document.getElementById('someID');`
`var $pdfTarget = $pdfdiv.getElementsByTagName("iframe")[0];`
`$pdfTarget.src = pdfsrc;`
`}` 

最新更新