让我们想象我有这样的事情:
<html> ... <div> <iframe src="test.html" hash="r4d5f7"></iframe> <iframe src="test.html" hash="8f7x97"></iframe> <iframe src="test.html" hash="gg4v5e"></iframe> <iframe src="test.html" hash="e54f87"></iframe> </div> ... </html>
test.html是空页面,自定义哈希属性总是具有不同的值,出于安全原因,两个页面都在同一个域上,iframe元素的数量和顺序是随机的.
我的问题是:有没有办法从内页(test.html)使用Javascript到其正确的iframe元素?让我们说,我在第三个iframe的页面中,我需要获取其iframe元素和alert()哈希值(在本例中为“gg4v5e”).
更具体.如果您熟悉Firefox的Firebug,它可以看到这种情况:
<html> ... <div> <iframe src="test.html" hash="r4d5f7"> <html> ... </html> </iframe> <iframe src="test.html" hash="8f7x97"> <html> ... </html> </iframe> <iframe src="test.html" hash="gg4v5e"> <html> ... </html> </iframe> <iframe src="test.html" hash="e54f87"> <html> ... </html> </iframe> </div> ... </html>
当我使用我的Javascript at< html>时,可以调用“something”来获取父元素(< iframe>)内页中的元素?
解决方法
当然有.
此代码适用于FF和IE6,Opera,Chrome(需要Web服务器以及来自相同域协议和端口的两个文件)
此代码适用于FF和IE6,Opera,Chrome(需要Web服务器以及来自相同域协议和端口的两个文件)
function getHash() { var ifs = window.top.document.getElementsByTagName("iframe"); for(var i = 0,len = ifs.length; i < len; i++) { var f = ifs[i]; var fDoc = f.contentDocument || f.contentWindow.document; if(fDoc === document) { alert(f.getAttribute("hash")); } } }