location.href没有改变iframe src

时间:2012-12-17 14:52:45

标签: javascript jquery iframe

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

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

工作正常,但是当我从iframe

中通过javascript更改网址的哈希值时
location.href += '#hash';

我可以看到它从iframe检查location.href改变了,但是从父文档中,src似乎没有改变。有什么帮助吗?

修改

由于包含页面和iframe位于不同的域中,因此我必须使用src属性进行检查,因此无法访问iframe location.href属性。

4 个答案:

答案 0 :(得分:3)

hash-parameter不在属性location.href中,请尝试

location.hash = 'hash';

答案 1 :(得分:0)

我怀疑你是否可以简单地从父javascript中做到这一点。 因为那时我可以:

  1. 使用隐藏的iframe创建一个页面。 (比如http://mysite.com/fake
  2. 在iframe中,在某个网站的登录过程中打开一些中间页面(类似于https://accounts.google.com/redirlogin
  3. 如果孩子的饼干存在&没有足够的注意,框架内的页面将重定向到实际的网站,用户登录。
  4. 从父页面,我可以检查它经历的所有中间网址,它们基本上可以包含一些会话ID。
  5. 注意:我在orkut天做过类似的事情。用于重定向到orkut的“中间登录页面”。这是为了我想实现的自动登录功能。但是,我无法在父页面中获取任何信息。

    注意:

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

答案 2 :(得分:0)

允许跨域帧设置但不能读取彼此的位置。 (为什么?好吧,阅读彼此的位置会违反相同的原始策略,可能会泄露URL中出现的敏感信息。我不确定为什么设置它们是允许的。历史上网站使用能够将父页面导航到{ {3}},但这不再那么相关了。)

因此,如果您尝试使用散列片段进行跨域帧通信(并且由于某种原因无法使用postMessage),那么执行此操作的方法是让内部框架更改其散列片段父母的位置,使用window.top.location.href。然后,父页面应经常检查其哈希片段的更改。

framebust是我发现的一个演示。

答案 3 :(得分:0)

此代码段适用于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;`
   `}`