我已经尝试了很多,但是每次遇到此错误时:“ Uncaught TypeError:content.getElementById不是函数”(附脚本)
非常感谢您的帮助:D花了我几个小时而无法弄清
var newcode = "";
var oldcode = "";
function update(){
var iframe = document.getElementById('if');
var content = iframe.contentWindow.document.getElementsByTagName('html')[0].getElementsByTagName('body')[0];
newcode = content.getElementById("code").innerHTML;
if(newcode != oldcode){
oldcode = newcode;
alert("lol"+newcode+"lol");
document.head.innerHTML += "<script>"+newcode;
}
}
window.setInterval(function(){
update();
}, 5000);
<html>
<head>
<title>Check</title>
</head>
<body>
<iframe id="if" src="myurl"></iframe>
</body>
</html>
答案 0 :(得分:2)
getElementById
仅可在document
上调用-不可在HTMLElement
上调用(甚至不能在HTMLBodyElement
上调用)。毕竟,ID在文档中应该是唯一的。更改为
var newCode = iframe.contentWindow.document.getElementById('code').innerHTML;
以便iframe.contentWindow.document
引用iframe中的文档。
如果您只想从祖先节点中选择一个特定的ID而无需返回文档,则可以使用querySelector
进行操作-只需在ID前面加上#
:
var newcode = content.querySelector("#code").innerHTML;
(但首先无需导航到content
,这里假定HTML是有效的)