0

js ファイルから関数を呼び出す関数があるページがあります。

js ファイルの関数を呼び出すコード:

<script language="javascript" type="text/javascript">
var qc = qc_chat;
window.onload = function()
{
qc.setup('<?php echo $p; ?>');
}
</script>

このコードを使用してqc.jsファイルを含めています:

function doThat() {
    $.ajax({
        url:    'http://www.example.com',
        type: 'GET',
        data: 'adrs='+getHost( document.domain ),
        dataType:   'jsonp',
        jsonp:  false,
        jsonpCallback: 'methodCallback',
        success: function( data ) {
            if( data.message == "yes" ) {

            } else {

        $.getScript("qc.js"); //files m including using this ajax
    $.getScript("tools.js");  //files m including using this ajax
            }
        }, 
        error: function( error ) {
            console.log( error ); 
        }
    });
}

そして、私はdoThat()使用して呼び出しています<body onload="doThat();">

しかし、コンソールでエラーが発生していますUncaught ReferenceError: qc_chat is not defined

ありがとう

4

2 に答える 2

3

は非同期であるため$.getScript、ロードするスクリプトに依存するものはすべて、そのコールバック関数で実行する必要があります。したがって、次のようになります。

$.getScript('qc.js', function() {
    qc_chat.setup('<?php echo $p; ?>');
});
于 2013-10-09T18:09:05.933 に答える
0

一部のモジュールが接続されている場所を編集できない場合は、次のスニペットを使用します。

var waitForqcchat = setInterval(function(){
  if(typeof qcchat != 'undefined'){
    clearInterval(waitForqcchat);
    //here I sure, that module connected
    qcchat.setup('<?=$p?>');
  }
}, 200);

また、qcchat が接続できない場合に待機を制限するロジックを作成する必要があります。

于 2013-10-09T18:19:18.423 に答える