Так Хотя я до сих пор неясно, о том, к чему вы пытаетесь это сделать, и ваш вопрос был довольно неясным (в ретроспективе), мне было любопытно, как мы можем решить это без создания бесконечного цикла.
window.top !== window.self
не будет работать, потому что они являются одним и тем же, поэтому я решил, что будет использовать хэш на исходной странице, опускают его от ребенка, чтобы отличить один от своего собственного клона.
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>test</title>
</head>
<body>
<h1 id="h1"></h1>
<script type="text/javascript">
document.getElementById('h1').textContent = window.location.search;
</script>
<script type="text/javascript">
if (window.location.hash === '#origin') {
var ifr = document.createElement('iframe');
var props = {
src: window.document.location.href + '?r=0',
width: 500,
height: 300,
style: "border:1px solid red;width:500px;height:300px;"
}
for (var key in props) {
ifr.setAttribute(key, props[key]);
}
document.body.appendChild(ifr);
setInterval(function(){
var s = ifr.src.split('?r=')[0];
ifr.setAttribute('src', s + '?r=' + parseInt(Math.random() * 1000000))
console.log(ifr.src);
// you can skip this, but it illustrates the refreshes
document.getElementById('h1').textContent = ifr.src;
}, 2000);
}
</script>
</body>
</html>
Вы должны запустить это самостоятельно, фрагмент кода, не любит свою попытку переадрессации, и я не могу не согласиться ..., - NB: только побежал в Chrome, но есть многое, что должно быть иначе в другом месте
Кроме того, только ради ясности, если вы сохраните это как test.html
вы должны запустить его как path/to/your/file/test.html?r=378426#origin
Могу ли я спросить, почему вы используете 'document.write()'? – NewToJS
@RayWu вы можете поддерживать постоянную консоль между загрузками страниц. Также см. Мой ответ ниже ... – datafunk