当浏览器停止按钮或ESC按下时停止JS

问题描述:

所以我有这个页面加载一个iframe与外部内容(不同的域名)。 现在下面的脚本部分加载另一个JS功能的iframe负载5秒后:当浏览器停止按钮或ESC按下时停止JS

document.getElementById('" . $hash . "').onload = function() { 
window.setTimeout('kernelInit(\'" . $hash . "\')', 5000); 
    if ($(this).height() == 0) { 
    window.location = 'stop.html'; 
    } 
    if ($(this).width() == 0) { 
    window.location = 'stop.html'; 
    } 
}; 

都好到现在。但是,用户可以单击浏览器停止按钮或按ESC键,从而防止iframe内容完全加载或完全加载。所以上面的JS检查是无用的,因为它无法检查iframe内容是否被加载,或者如果用户手动停止加载。

我知道必须有解决方案。也许创建然后每X毫秒检查用户和服务器之间的连接?理论上如果取消(通过浏览器停止按钮或ESC键)应该取消进一步加载任何javascript。 此处的目标是在导航停止或取消时不完成上述脚本。

任何指针? 谢谢。

+2

为什么你需要在一个iframe加载其他页面? –

+0

广告显示在iframe中。用户可以通过激励来查看这些广告。如果用户停止加载广告,那么我们有问题。 – Ivan

+0

正在加载的框架并不一定意味着广告正在显示。只要用户可以用一些自定义的CSS来隐藏它们。另一种方法是通过XHR通过服务器或其他允许跨域的服务器获取内容。 –

尝试类似,对于Esc键选项

$(document).keyup(function(e) { 
    if (e.keyCode == 27) { 
     alert("Esc was pressed") 
    } 
}); 

因为我不知道该怎么办了浏览器的取消按钮。 将警报更改为您想要执行的事件。

https://jsfiddle.net/aLot1mky/