仅当iframe内容是新的时才重新加载iframe?

时间:2014-03-08 09:33:54

标签: javascript html iframe

简短版:

如果iframe的内容为 new ,那么iframe指向同一服务器上的另一个HTML文件的HTML文件会自动重新加载iframe

上下文

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

所以我的简单解决方案是一些Javascript强制每秒重新加载iframe src。

但是,每次加载iframe时都会导致内容闪烁,大多数情况下信息不是新的。

相反,我更喜欢HTML文件强制重新加载iframe src,当它是新的时。这可能吗?

1 个答案:

答案 0 :(得分:1)

您可以使用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();
})();

这会向服务器发出请求以查看内容是否已更改。每个请求结束和下一次检查的开始之间有一秒钟。 (目前,如果服务器出现故障,则不会出现错误处理。)


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