我有一个脚本,点击后关闭iframe。 我需要当你点击iframe里面的链接有延迟15秒加载iframe中的页面,15秒后iframe自动关闭。
$(window).on('blur',function(e) {
if($(this).data('mouseIn') != 'yes')return;
$('iframe').filter(function(){
return $(this).data('mouseIn') == 'yes';
}).trigger('iframeclick');
});
$(window).mouseenter(function(){
$(this).data('mouseIn', 'yes');
}).mouseleave(function(){
$(this).data('mouseIn', 'no');
});
$('iframe').mouseenter(function(){
$(this).data('mouseIn', 'yes');
$(window).data('mouseIn', 'yes');
}).mouseleave(function(){
$(this).data('mouseIn', null);
});
$('iframe').on('iframeclick', function(){
$(this).hide()
});
$('<input type="text" style="position:absolute;opacity:0;height:0px;width:0px;"/>').appendTo(document.body).blur(function(){
$(window).trigger('blur');
}).focus();
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<iframe style="width:400px;
height:250px;" src="//example.com"></iframe>
&#13;
答案 0 :(得分:1)
如果你想坚持使用Jquery,你可以使用.delay()
要在iframe关闭前等待15秒,您应该这样做:
$('iframe').on('iframeclick', function(){
$(this).delay(15000).hide();
}
以一种简单的方式,你会在&#34; hide&#34;之前延迟15秒。行动
答案 1 :(得分:0)
您正在寻找setTimeout()方法。您可以在此处找到如何使用它:http://www.w3schools.com/jsref/met_win_settimeout.asp。
在你的情况下会是这样(可以优化,取出全局变量等):
globalVar = null;
function closeIframe() {
globalVar.hide();
}
$('iframe').on('iframeclick', function(){
globalVar = $(this);
setTimeout("closeIframe()", 15000);
});
答案 2 :(得分:0)
使用好的旧setTimeout:
var timeoutValue = 15000; /*ms*/
setTimeout(function(){...}, timeoutValue);
在你的情况下看起来像:
var close = function(element){element.hide();};
$('iframe').on('iframeclick', function(){
var timeoutValue = 15000;
var context = $(this);
setTimeout(function(){close(context)}, timeoutValue);
});
答案 3 :(得分:0)
将事件侦听器绑定到iframe内的元素仅在父网站和iframe位于同一域时才有效。如果iframe的内容位于不同的域中,则您无法执行此操作,因为它被归类为&#34; click-jacking&#34;,这是一个很大的安全威胁。见http://en.wikipedia.org/wiki/Same-origin_policy
如果iframe位于同一个域中,那么您可以在iframe中添加事件侦听器,然后调用父级来通知事件。
您还可以获取内容并找到要绑定事件处理程序的元素。
$("iframe#name").contents().find(".link").on("click", function() {
$("iframe#name").delay(15000).hide();
});
相关:
答案 4 :(得分:0)
我使用了sleep()函数并解决了我的问题!