Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/471.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 每30秒更改一次iframe源。_Javascript_Jquery_Iframe - Fatal编程技术网

Javascript 每30秒更改一次iframe源。

Javascript 每30秒更改一次iframe源。,javascript,jquery,iframe,Javascript,Jquery,Iframe,我的网页上加载了一个iframe。30秒后,我想更改iframe的源以加载另一个站点。这在使用jQuery(setTimeout函数)时非常有效,但我的问题是性能。更改源代码时,将页面加载到iframe需要15秒。在内容加载之前,我一直处于空白屏幕。是否可以仅在加载页面后更改源?我可以在jQuery中做些什么来预加载网页吗?如果使用ajax调用来检索内容,则可以在新内容到达时用新内容替换旧内容,页面将不会显示为空白。根据所做的工作,您可以查看函数,也可以使用ajax调用自己插入内容 当然,为了修

我的网页上加载了一个iframe。30秒后,我想更改iframe的源以加载另一个站点。这在使用jQuery(setTimeout函数)时非常有效,但我的问题是性能。更改源代码时,将页面加载到iframe需要15秒。在内容加载之前,我一直处于空白屏幕。是否可以仅在加载页面后更改源?我可以在jQuery中做些什么来预加载网页吗?

如果使用ajax调用来检索内容,则可以在新内容到达时用新内容替换旧内容,页面将不会显示为空白。根据所做的工作,您可以查看函数,也可以使用ajax调用自己插入内容


当然,为了修改iframe的内部结构,您必须拥有相应的同源特权。

您可以在页面上的同一位置拥有两个iframe,但其中一个具有
可见性:隐藏的
,您可以将内容预加载到其中,然后在30秒后将其交换。然后更改以前可见的URL,开始将新URL加载到该URL中,并重复此操作。

您可以编写如下脚本,以检测页面(在iframe中)何时完成加载:

// Insert iframe in the page
var $iframe = $('<iframe src="http://www.msn.com/"></iframe>').css({
    width: '1px',
    height: '1px'
}).attr('frameborder', '0').appendTo('body').data('loaded', 'no');

// Function to execute when the page (in the iframe) has finished to load,
// or when the timeout is over
function iframeIsReady() {
    if ($iframe.data('loaded') == 'no') {
        $iframe.data('loaded', 'yes').css({
            width: '800px',
            height: '800px'
        });
        alert('iframe is ready');
    }
}

// Detect when the page (in the iframe) has finished to load
$iframe.load(function ($iframe) {
    iframeIsReady();
});

// Add an optional timeout
setTimeout(function () {
    iframeIsReady();
}, 15000);
//在页面中插入iframe
变量$iframe=$('').css({
宽度:“1px”,
高度:“1px”
}).attr('frameborder','0')。appendTo('body')。data('loaded','no');
//当页面(在iframe中)完成加载时要执行的函数,
//或者当超时结束时
函数iframeIsReady(){
if($iframe.data('loaded')=='no'){
$iframe.data('loaded','yes').css({
宽度:“800px”,
高度:“800px”
});
警报(“iframe已准备就绪”);
}
}
//检测页面(在iframe中)何时完成加载
$iframe.load(函数($iframe){
iframeIsReady();
});
//添加可选超时
setTimeout(函数(){
iframeIsReady();
}, 15000);

如果页面加载时间过长,我还添加了15秒的“超时时间”。

iframe中的内容是否来自不同的域?