2012-03-11 7 views
1

現在MW 1.16の拡張機能を1.18に変換しています。この拡張モジュールは、javascriptを使用してページインターフェースを変更します。次のように私はこのように私の異なるスクリプトをロードするために、リソース・ローダを使用していますResourceLoader:特定の関数を読み込む方法は?

:ここ

$commDictResourceTemplate = array(
    'localBasePath' => dirname(__FILE__) . '/modules', 
    'remoteExtPath' => 'CommunityDictionary/modules', 
); 

$wgResourceModules += array(
    'ext.CommunityDictionary.jsAndCss' => $commDictResourceTemplate + array(
     'scripts' => array('jquery.dataTables.min.js','jquery.jeditable.mini.js','jquery.dataTables.editable.js'), 
     'styles' => array('custom-theme/jquery-ui-1.8.16.custom.css'), 
     'dependencies' => array('jquery.ui.dialog'), 
    ) , 
    'ext.CommunityDictionary.dictPage' => $commDictResourceTemplate + array(
     'scripts' => array('commDict.include.js','commDict.js'), 
     'styles' => array('commDict.css'), 
     'dependencies' => array('ext.CommunityDictionary.jsAndCss') 
    ) 

); 

commDict.jsです:

var oTable; 
var jDict; 

$(loadDictPage); 
function loadDictPage(){ 
    jDict = $($.parseXML(xmlInput)); 
    initDataTable() 
    initEditable(); 
    initDelete(); 
    initLanguageDialog(); 
} 

commdict.include.jsは、上記のすべてと呼ばれる初期化機能に加えて他の束が含まれていますインターフェイスのclickイベントにバインドされている関数。次のようにバインドされた関数が定義されています。次のように

$('#langBtn').click(function(){ 
    selectLanguages(); 
}); 

selectLanguagesが定義されています:私はdebugモードで自分のページをテストする場合

Uncaught ReferenceError: selectLanguages is not defined 

:ここ

function selectLanguages(){ 
    $('#selectLanguageDialog').dialog('open'); 
} 

は私が得るエラーです、すべては問題ありませんが、私が非デバッグモードでテストすると、javascriptエンジンがうまくいかず、自分の関数が定義されていないことがわかります。リソースローダーによって制御されます。私の推測では、リソースローダーは、ページが解析された後にのみバインドされるクリック機能は表示されませんが、これを修正する方法はわかりません。特定の関数をロードするようにローダに明示的に指示する方法はありますか?

ここで起こっていることに誰かが手がかりを持っていますか?

答えて

1

。デバッグモードは残念ながら異なる動作をすることが知られています...

+0

私はこの問題を少し前に解決しましたが、このガイドが私のコードをアップグレードするのに非常に有用であることを証明しています。 –

1

これは理想的です。 selectLanguagesはクリックハンドラと同じファイルですか?リソースローダーはグローバルスコープの代わりに独自のスコープでモジュールをロードするので、私は尋ねます。あなたはグローバル変数や関数にアクセスしたい場合は、このようなグローバルwindowオブジェクトにアタッチする必要があります。そして、

window.selectLanguages = function()... 

Migration Guide (#Troubleshooting)に記載されている問題のように聞こえる
$('#langBtn').click(function() { 
    window.selectLanguages(); 
} 
関連する問題