Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/427.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 仅当iframe内容为新内容时重新加载iframe?_Javascript_Html_Iframe - Fatal编程技术网

Javascript 仅当iframe内容为新内容时重新加载iframe?

Javascript 仅当iframe内容为新内容时重新加载iframe?,javascript,html,iframe,Javascript,Html,Iframe,短版: 如果一个HTML文件的iframe指向同一服务器上的另一个HTML文件,那么当iframe的内容是新的时,它怎么能自动重新加载该iframe 上下文: 我正在使用一个HTML/Javascript文件来观察Python程序中的新指令。当有新的指令要查看时,Python程序会重写一个简单的HTML文件 因此,我的简单解决方案是使用一点Javascript,强制每秒重新加载iframesrc 但是,这会导致每次加载iframe时内容都会闪烁,而且大部分时间信息都不是新的 相反,我更希望HTM

短版:


如果一个HTML文件的
iframe
指向同一服务器上的另一个HTML文件,那么当
iframe
的内容是新的时,它怎么能自动重新加载该
iframe

上下文:

我正在使用一个HTML/Javascript文件来观察Python程序中的新指令。当有新的指令要查看时,Python程序会重写一个简单的HTML文件

因此,我的简单解决方案是使用一点Javascript,强制每秒重新加载
iframe
src

但是,这会导致每次加载
iframe
时内容都会闪烁,而且大部分时间信息都不是新的


相反,我更希望HTML文件在新文件时只强制重新加载
iframe
src。这可能吗?

您可以使用AJAX请求检查iframe是否已更改

var value;
(function check() {
    var xhr = new XMLHttpRequest();
    xhr.open('GET', '/url/toIframe'); // change this to the correct URL
    xhr.addEventListener('load', function() {
        if(value === undefined) {
            value = this.responseText;
        } else if(value != this.responseText) {
            value = this.responseText;
            // refresh iframe!
        }
        setTimeout(check, 1000); // check again in another second
    });
    xhr.send();
})();
这会向服务器发出请求,以查看内容是否已更改。在每次请求结束和下一次检查开始之间有一秒钟的时间。(目前,如果服务器停机,则没有错误处理。)



仅供参考,如果服务器发送上次修改的
头,您实际上可以发出头请求并检查该头。如果您不知道我在说什么,请不要担心。

如果您正在观看python程序,为什么不在每次重写html文件时从python程序发送一个响应?将响应发送回什么?我刚刚在Chrome中加载了一个HTML文件,重新加载了一个iframe——Python如何通知加载的HTML新信息可用?您如何观看您的Python程序?你在使用ajax吗?当python有新的信息要报告时,它会重新编写一个HTML文件。Chrome中加载的本地HTML文件不断在iframe中重新加载python编写的HTML。我猜这需要一个服务器?我刚刚在Chrome中从磁盘加载了一个HTML文件。很高兴尝试服务器路由。你的建议肯定需要一个服务器,“指向同一服务器上的另一个HTML文件”。你没有服务器吗?如果没有,您可以转到拥有这些文件的位置,运行
python-msimplehttpserver
。转到
localhost:8000
,您将看到您的文件。奇怪的是,您的解决方案似乎工作了一段时间,但随后变得迟钝。我的意思是,当我第一次加载文件,然后在iframe src中进行更改时,更改会在保存后立即加载(在调用的html中)。但是,如果我在一段时间后返回到它并对src iframe进行另一个更改,那么这些更改在一段时间内不会出现(例如10-20秒)。想法?我在URL的末尾添加了一个
?随机数
,这就解决了这个问题。一定是缓存问题。