0

我正在编写一个小部件并且依赖于 jQuery,所以我需要使用 noconflict 以避免网站所有者也在运行 jQuery 的页面出现问题。

到目前为止我有这个:

(function () {

    var js13;

var script = document.createElement('script');
script.src = 'http://xxx.xxx.xxx.xxx:8080/socket.io/socket.io.js';
script.type = 'text/javascript';
document.getElementsByTagName('head')[0].appendChild(script);

var script = document.createElement('script');
script.src = 'http://code.jquery.com/jquery-1.8.3.js';
script.type = 'text/javascript';
document.getElementsByTagName('head')[0].appendChild(script);

var script = document.createElement('script');
script.src = 'http://code.jquery.com/ui/1.9.2/jquery-ui.js';
script.type = 'text/javascript';
document.getElementsByTagName('head')[0].appendChild(script);
script.onload = scriptLoadHandler;      


function scriptLoadHandler() {
    js13 = window.jQuery.noConflict(true);

    main();

}



/******** Main function ********/
function main() {
    js13(document).ready(function ($) {


     main widget code is here.....

} // main

})();

有什么想法可能是错的吗?我得到(Safari):

Type Issue
'undefined' is not an object (evaluating 'window.jQuery.noConflict') 

需要它在所有浏览器中工作,无论页面运行什么 jQuery 或其他脚本。

另一个问题是http://xxx.xxx.xxx.xxx:8080/socket.io/socket.io.js并不总是加载..

我需要在其他加载之前加载

4

1 回答 1

0

这只会回答您问题的一部分,但我无法将其放入评论框中。因此,关于脚本问题,一种可能的解决方案可能是:

$.ajax({
    url: 'http://xxx.xxx.xxx.xxx:8080/socket.io/socket.io.js',
    dataType: 'script',
    error: function (XMLHttpRequest, textStatus, errorThrown) {
        //couldn't load the script
    },
    success:function(){ 
        //script has loaded, do stuff here
    }

});

您的其他问题的一个可能解决方案可能是简单地检查是否已经加载了 jQuery:

if(typeof jQuery !== 'undefined')
     //jquery is loaded
于 2013-01-15T15:14:53.523 回答