我必须将外部网站的脚本包含到我的网站中。


 < script src ='http://widgets.something.de / clientidblablabla?parameters = 2324'type ='text / javascript'>< / script>



 太糟糕了,那就是那个脚本他们还包括jQuery 1.4.1。因为到目前为止我使用的是jQuery 1.8.3,所以我的一些脚本会破坏。


有没有办法阻止加载外部jQuery文件?我可以使用url http://widgets.something.de/resources/jquery-1.4.1.js
并阻止它?
< script src =“”>
标记实现到 if($(window).width()> 768px){// fire script}; 代码> 

答案 0 :(得分:2)
我认为你可以简单地使用另一个别名加载你的jquery并让插件使用公共别名$
。
通常是加载所有插件并在需要时使用它们。所以if($(window).width() > 768) { // fire script }
听起来不错。另一种方法是使用jQuery getScript()
方法,它允许您异步加载脚本:
(function(j){
if( $(window).width() > 768 ){
j.getScript('http://widgets.something.de/clientidblablabla?parameters=2324', function(){
// script loaded, you can play with it from here
});
}
})(jQuery);
修改强>
我做了一个例子(jsFiddle)来更好地解释它。
(function(j213){
// right now j213 and $ are aliases of the same version (2.1.3)
j213('body').append( 'j213 = ' + j213().jquery + '<br/>' );
$('body').append( '$ = ' + $().jquery + '<br/>' );
j213.getScript('https://ajax.googleapis.com/ajax/libs/jquery/1.4.1/jquery.min.js', function(){
// once another version of jQuery has been loaded, $ becomes an alias for 1.4.1 while j213 still holds for 2.1.3
$('body').append( '$ = ' + $().jquery + '<br />' );
// you can also remove an alias
delete $; // or $ = undefined;
// or $ = null;
// or $ = 'whatever you want';
j213('body').append(typeof($) + '<br />'); // returns undefined
// or assign a new one easily
$ = jQuery; // $ is now 1.4.1 - the last jQuery loaded
$('body').append( '$ = ' + $().jquery + '<br />' );
$ = j213; // $ is now 2.1.3
$('body').append( '$ = ' + j213().jquery + '<br />' );
});
})(jQuery);
答案 1 :(得分:1)
如果jQuery 1.4.1与您正在加载的小部件位于同一个文件中,我认为无法加载它。但是你可以先在浏览器中删除jQuery 1.4.1,先加载那个小部件,然后“删除”$
和jQuery
变量(delete $; delete jQuery;
)和然后加载你的jQuery 1.8.3。
您可以使用document.write有条件地加载文件,或者通过XHR-Request加载文件并将其传递给eval()