У меня есть ошибочный html + javascript. Она возвращает Uncaught ReferenceError: number is not defined
, который, как ожидается:Очистить кеш iframe
<!DOCTYPE html>
<meta name="robots" content="noindex">
<html>
<body>
<p id="demo"></p>
<script>
document.getElementById("demo").innerHTML = number();
</script>
<script id="jsbin-javascript">
function number() {
return 1;
}
</script>
</body>
</html>
Однако, если я запускаю код в виде строки по iframe
дважды (plnkr), то второй прогон странно возвращает результат. Это потому, что функция number
кэшируется где-то первым запуском, чего я не хочу.
<!DOCTYPE html>
<html>
<head>
<script src="script.js"></script>
</head>
<body>
<iframe></iframe>
<script>
var iframe = document.querySelector('iframe');
var iframe_doc = iframe.contentDocument;
iframe_doc.open();
iframe_doc.write(source);
iframe_doc.close();
var iframe = document.querySelector('iframe');
var iframe_doc = iframe.contentDocument;
iframe_doc.open();
iframe_doc.write(source);
iframe_doc.close();
</script>
</body>
</html>
Так кто-нибудь знает, как очистить кэш, таким образом, чтобы каждый прогон iframe
совершенно новый?
Edit 1 После ответ @LeonidVasilyev, я добавил в HTML:
<section id="output">
<iframe></iframe>
</section>
И в JavaScript моей детской площадки:
this.render = function (code) {
var source = prepareSource(code);
var placeholder = document.getElementById("output");
while (placeholder.firstChild) {
placeholder.removeChild(placeholder.firstChild);
}
var iframe = document.createElement("iframe");
placeholder.appendChild(iframe);
var iframe_doc = iframe.contentDocument;
iframe_doc.open();
iframe_doc.write(source);
iframe_doc.close();
}
Что нечетное является то, что каждый время Я перезагружаю/обновляю страницу, значок бумаги на вкладке Chrome и значок перезагрузки вокруг каждой вспышки дважды. Это из-за placeholder.appendChild(iframe)
, потому что если я удалю эту строку, она мигает один раз.
Кто-нибудь знает, как избежать этого значка, дважды мигающего?
Euh, не уверен, если я правильно понимаю. Но вы можете исправить 'Uncaught ReferenceError: number not defined', просто поместив функцию внутри того же тега скрипта, что и вызов к ней. Итак, что вы пытаетесь сделать с iframe? Это просто исправление ошибки выше? Или вам действительно нужен iframe для чего-то? – Shilly
Кроме того, причина, по которой вам нужно дважды вызывать код iframe, заключается в том, что iframe и родительский фрейм не синхронизированы. Итак, когда вы пытаетесь написать тело iframe, DOM еще не загружен, поэтому вам нужно установить Timeout doc.write. – Shilly
Я занимаюсь игровой площадкой с iframe, поэтому, когда код должен возвращать ошибку, игровая площадка должна вернуть ошибку. Но я понимаю, что когда я пишу iframe несколько раз, он делает ошибочный запуск кода из-за кеша (это мое предположение), поэтому я хочу очистить кеш ... –