如果检测到移动设备,我需要从页脚中删除特定的外部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" );
}
答案 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在页面加载后运行,因此脚本已经在内存中 - 加载页面后删除脚本没有意义。