2016-08-07 3 views
-1

Я пытаюсь использовать этот код: Как обновить iframe текущей страницы с интервалом?

document.write('<iframe id="frame" src="' + window.location.href + '"><script>setInterval(function()/{document.getElementById("frame").contentWindow.location.reload();},10000);</script>');
<p>an example page</p>

Все это делает добавить '); до конца страницы.

+0

Могу ли я спросить, почему вы используете 'document.write()'? – NewToJS

+0

@RayWu вы можете поддерживать постоянную консоль между загрузками страниц. Также см. Мой ответ ниже ... – datafunk

ответ

1

Так Хотя я до сих пор неясно, о том, к чему вы пытаетесь это сделать, и ваш вопрос был довольно неясным (в ретроспективе), мне было любопытно, как мы можем решить это без создания бесконечного цикла.

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

0

Взял немного ярлыка с тем, как обрабатывается строка запроса, но суть его здесь.

Создание объекта IFrame, добавить свои свойства затем добавить к DOM и, наконец, перезагрузите страницу с новой строки запроса каждый так часто

var ifr = document.createElement('iframe'); 
 
    var props = { 
 
     src: 'http://example.com/?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); 
 
    }, 10000);

+0

, чтобы вы могли создать страницу в себе? Могу я спросить, почему? – datafunk

+0

Как я и подозревал (но быстро убедил его в проверке), если вы запустите такой скрипт на странице, в которую вы вставляете одну и ту же страницу, а затем продолжайте обновлять ее, вы оказываетесь в эффекте зеркала лифта. '' 'src: window.document.location.href + '? r = 0'''' должен работать с моим предыдущим ответом, но я не могу окутать голову, почему вы хотите это сделать ... – datafunk

 Смежные вопросы

  • Нет связанных вопросов^_^