0

私はウィジェットを作成しており、jQuery に依存しているため、サイト所有者も jQuery を実行しているページの問題を回避するために、noconflict を使用する必要があります。

私はこれまでのところこれを持っています:

(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

これはあなたの質問の一部にしか答えませんが、コメント ボックスに収まりませんでした。したがって、スクリプトの問題に関して、考えられる解決策の 1 つは次のとおりです。

$.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 に答える