"Uncaught TypeError: content.getElementById не является функцией" - PullRequest
1 голос
/ 23 июня 2019

Я уже много пробовал, но каждый раз, когда я получаю эту ошибку: «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 Ответ

2 голосов
/ 23 июня 2019

getElementById вызывается только на document - на 1003 * не вызывается (даже на HTMLBodyElement).В конце концов, идентификаторы должны быть уникальными в документе.Измените на

var newCode = iframe.contentWindow.document.getElementById('code').innerHTML;

, чтобы iframe.contentWindow.document ссылался на документ внутри iframe.

Если вы хотите выбрать только определенный идентификатор из узла-предка, не возвращаясь к документу,это можно сделать с помощью querySelector - просто добавьте префикс ID к #:

var newcode = content.querySelector("#code").innerHTML;

(но в первую очередь, здесь нет необходимости переходить к content, при условии, что HTMLдействует)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...