我需要检查iframe src是否有来自父页面的更改。
$('myiframe').attr('src');
工作正常,但是当我从iframe
中通过javascript更改网址的哈希值时location.href += '#hash';
我可以看到它从iframe检查location.href改变了,但是从父文档中,src似乎没有改变。有什么帮助吗?
修改
由于包含页面和iframe位于不同的域中,因此我必须使用src属性进行检查,因此无法访问iframe location.href
属性。
答案 0 :(得分:3)
hash-parameter不在属性location.href中,请尝试
location.hash = 'hash';
答案 1 :(得分:0)
我怀疑你是否可以简单地从父javascript中做到这一点。 因为那时我可以:
注意:我在orkut天做过类似的事情。用于重定向到orkut的“中间登录页面”。这是为了我想实现的自动登录功能。但是,我无法在父页面中获取任何信息。
注意:
答案 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;`
`}`