“未捕获的TypeError:content.getElementById不是函数”

时间:2019-06-22 21:54:03

标签: javascript html iframe

我已经尝试了很多,但是每次遇到此错误时:“ 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>

1 个答案:

答案 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是有效的)