匿名window.setTimeout函数重装页面

时间:2016-01-04 12:37:53

标签: javascript jquery onload clearinterval

使用Tampermonkey更改网站的行为。使用以下代码在网站上遇到一些问题:

<script language="JavaScript">
        if (typeof jQuery != 'undefined') {
            jQuery(window).load(function() {
                 window.setTimeout(function() {
                     window.location.replace(window.location.href);
                 }, 180E3);
             });
         }
</script>

如何删除/阻止它重新加载页面?

2 个答案:

答案 0 :(得分:0)

如果您的脚本在该段代码之前运行,那么就不会弄乱那么多,您可以执行以下操作:

jQuery

如果您之后仍然需要jQuery.fn.load = function() { console.log("Tried to reload the page!") } // Then the following, outputs 'Tried to reload the page!' and does nothing else jQuery(window).load(function() { // code }) 功能,可以执行以下操作:

load

但它依赖于浏览器且非常不可靠

另一种方法是添加var oldLoad = jQuery.fn.load var undesiredCallback = "function() { window.setTimeout(function() { window.location.replace(window.location.href); }, 180E3); }" jQuery.fn.load = function(callback) { if(callback.toString() !== undesiredCallback) { oldLoad(callback); } } 事件,但会在您的标签上弹出提示:

onbeforeunload

答案 1 :(得分:0)

您还可以覆盖setTimeout functionallity。

var oldSetTimeout = window.setTimeout;
window.setTimeout = function(func,interval){ 
    if(typeof func === "function" && func.toString().indexOf('window.location.replace(window.location.href)') > -1){
        /*do nothing*/
    }else{ 
        oldSetTimeout(func,interval) 
    } 
}