2017-03-02 84 views
0

我刚刚遇到一个外部JavaScript文件的奇怪问题。它在Edge和Chrome中完美运行,但在Firefox(51.0.1)中无法运行。外部Javascript不能在Firefox中工作

我有很多的脚本在页面的机身底部,这样

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> 
<script src="js/adblocker.js"></script> 
<script> 
$(document).ready(function() { 
    $('.dir_hotel').keyup(function(event) { 
     if (event.keyCode == 13) { 
      this.form.submit(); 
      return false; 
     } 
    }); 
}); 
</script> 
<?php if ($mobile_browser > 0) { ?> 
<script> 
/* MOBILE COLLAPSE MENU */ 
(function($) { 
    $.fn.collapsable = function(options) { 
    // iterate and reformat each matched element 
    return this.each(function() { 
     // cache this: 
     var obj = $(this); 
     var tree = obj.next('.nav'); 
     obj.click(function(){ 
     if(obj.is(':visible')){tree.toggle();} 
     }); 
    }); 
    }; 
})(jQuery); 

$(document).ready(function(){ 
    $('.slide-trigger').collapsable(); 
    $(".slide-trigger").click(function(){ 
     $('.slide-trigger').html($('.slide-trigger').text() == 'Collapse MENU' ? 'MENU' : 'Collapse MENU'); 
    }); 
}); 
</script> 
<?php }?> 
</body> 

的adblocker.js文件不能运行。我尝试添加警报作为.js文件的第一行,警报从不出现。我在浏览器中检查了控制台,显示该文件未加载。

如果我

<script> 
window.onload=function(){ 
var clientHeight = document.getElementById('travins').clientHeight; 
if (clientHeight < 20) { 
     var node = document.getElementById("insnote"); 
     node.innerHTML = "<a href='https://clkuk.tradedoubler.com/click?p=18211&a=1906311&g=232597' target='_blank'>Columbus Direct Travel Insurance</a>"; 
} 
var clientHeight = document.getElementById('flights').clientHeight; 
if (clientHeight < 50) { 
     var node = document.getElementById("flightnote"); 
     node.innerHTML = "<a href='http://www.kqzyfj.com/click-7782323-11015988-1440520708000' target='_blank'>Skyscanner</a>"; 
} 
var clientHeight = document.getElementById('carhire').clientHeight; 
if (clientHeight < 20) { 
     var node = document.getElementById("hirenote"); 
     node.innerHTML = "<a href='http://www.zestcarrental.com/click.php?adm=1018&adt=14' target='_blank'>Zest Car Rental</a>"; 
} 
var clientHeight = document.getElementById('parking').clientHeight; 
if (clientHeight < 20) { 
     var node = document.getElementById("parknote"); 
     node.innerHTML = "<a href='https://clkuk.tradedoubler.com/click?p=20642&a=1906311&g=20842820' target='_blank'>Purple Parking</a>"; 
} 
var clientHeight = document.getElementById('brittany').clientHeight; 
if (clientHeight < 20) { 
     var node = document.getElementById("ferrynote"); 
     node.innerHTML = "<a href='http://being.successfultogether.co.uk/click.asp?ref=731409&site=6792&type=b3&bnb=3' target='_blank'>Brittany Ferries</a>"; 
} 
}; 
</script> 

更换

<script src="js/adblocker.js"></script> 

它完美的作品。

我试过js/adblocker.js,/js/adblocker.js和mydomain.com/js/adblocker.js,这没有什么区别。我也仔细检查过这个文件实际上传了,它是。我一定在做一些愚蠢的事情,但是什么?

+2

您是否在Firefox中安装了adblocker扩展程序,该扩展程序正在检测外部脚本名称中的“ad”并将其阻止? – Joe

+0

给那个男人一枚金牌!你在一个,乔。我只是重命名了这个文件,它直接运行。有一点重复检查是绝对可以肯定的,但我认为你已经得到了它。真正具有讽刺意味的是,因为adblocker.js的全部目的是回应adblocker的存在。非常感谢。 – TrapezeArtist

回答

0

正如Joe正确建议的那样,Adblock Plus扩展程序阻止了adblocker.js文件。将文件名更改为blocker.js已解决该问题。

我不得不说,我认为这是一种过滤广告的粗暴方式,因为必须有这么多天真的方式才能使文件在名称中包含“ad”。将来,只要我的Firefox出现意想不到的情况,我都会在此观察。

+0

当然肯定有更好的方法,但这就是每个人似乎都这样做的方式。我有一个扩展程序来阻止网站打开未被请求的弹出窗口(有些网站设法跳过内置功能),我不时地发出“不阻止广告”的警告(当然还有一堆广告,因为我是不阻止他们)。 –

0

尝试用JavaScript代码在这段代码之间输入你的JavaScript代码 (function($) { // your code here })(jQuery);。它和我一起工作。