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