現在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エンジンがうまくいかず、自分の関数が定義されていないことがわかります。リソースローダーによって制御されます。私の推測では、リソースローダーは、ページが解析された後にのみバインドされるクリック機能は表示されませんが、これを修正する方法はわかりません。特定の関数をロードするようにローダに明示的に指示する方法はありますか?
ここで起こっていることに誰かが手がかりを持っていますか?
私はこの問題を少し前に解決しましたが、このガイドが私のコードをアップグレードするのに非常に有用であることを証明しています。 –