需要从移动设备的页脚中删除外部js文件

时间:2016-06-17 21:10:23

标签: jquery

如果检测到移动设备,我需要从页脚中删除特定的外部js文件。你有建议吗?我尝试了一些代码,但它没有用。

以下是代码:

if( /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent) ) {

    $('body').remove( "http://www.jqueryscript.net/demo/jQuery-Before-After-Image-Slider-Plugin-imgSlider/js/imgslider.js" );

}

2 个答案:

答案 0 :(得分:1)

当你在$('body')上调用.remove时,你告诉它删除一个字符串。那不行。您需要告诉浏览器删除实际的脚本元素。

但是,仍然无法解决您的问题。加载脚本后,它的函数和值都在内存中 - 删除脚本元素不会从内存中删除这些函数/值。

我建议你采取不同的方法,并做这样的事情:

$(document).ready(function() {
  if(!(/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)) ) {
    var script = $("<script type='text/javascript' src='http://www.jqueryscript.net/demo/jQuery-Before-After-Image-Slider-Plugin-imgSlider/js/imgslider.js' />");
    $('head').append( script );
  }        
});

基本上,如果脚本不是移动设备,请使用javascript加载脚本。

编辑:此外,依赖其他域上的脚本是不好的做法。去下载该脚本并自己托管!

答案 1 :(得分:0)

.remove可以删除被调用的DOM对象或子选择器。

.remove( [selector ] )

http:// ....不是选择器。您需要指明具体要素。 最简单的选择是将id属性添加到脚本标记。是的,这是允许的。然后您可以按ID进行选择。

代码将如下:     

的jquery:     $( '主体')除去( '#removeonmobile');

您当然可以尝试使用:contains创建选择器,但它可能会更具挑战性。

顺便说一句。更好的选择可能是不在移动设备上包含此脚本,并在服务器端实现它。 jQuery在页面加载后运行,因此脚本已经在内存中 - 加载页面后删除脚本没有意义。