如何定时刷新当前页面的iframe?
How do I refresh an iframe of the current page with an interval?
我正在尝试使用此脚本将页面放入自身的 iframe,并每隔一段时间刷新 iframe:
document.write('<iframe id="frame" src="' + window.location.href + '"><script>setInterval(function ()/{document.getElementById("frame").contentWindow.location.reload();},10000);</script>');
它所做的只是将 ');
附加到页面末尾。
我在别人的页面上将其用作自动刷新的脚本。如果我只是刷新,间隔就被破坏了
对查询字符串的处理方式进行了一些简化,但要点在这里。
创建一个 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);
所以虽然我仍然不清楚你想解决这个问题并且你的问题也很不清楚(回想起来),但我很好奇我们如何在不创建无限循环的情况下解决这个问题。
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>
你必须自己 运行 这个,代码片段不喜欢它的重定向尝试,我不能不同意......,- 注意:只有 运行 它在 Chrome, 但其他地方应该有很多不同之处
此外,为了清楚起见,如果您将其保存为 test.html
,那么您应该 运行 将其保存为 path/to/your/file/test.html?r=378426#origin
我正在尝试使用此脚本将页面放入自身的 iframe,并每隔一段时间刷新 iframe:
document.write('<iframe id="frame" src="' + window.location.href + '"><script>setInterval(function ()/{document.getElementById("frame").contentWindow.location.reload();},10000);</script>');
它所做的只是将 ');
附加到页面末尾。
我在别人的页面上将其用作自动刷新的脚本。如果我只是刷新,间隔就被破坏了
对查询字符串的处理方式进行了一些简化,但要点在这里。
创建一个 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);
所以虽然我仍然不清楚你想解决这个问题并且你的问题也很不清楚(回想起来),但我很好奇我们如何在不创建无限循环的情况下解决这个问题。
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>
你必须自己 运行 这个,代码片段不喜欢它的重定向尝试,我不能不同意......,- 注意:只有 运行 它在 Chrome, 但其他地方应该有很多不同之处
此外,为了清楚起见,如果您将其保存为 test.html
,那么您应该 运行 将其保存为 path/to/your/file/test.html?r=378426#origin