我目前正在將我爲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
定義如下:
function selectLanguages(){
$('#selectLanguageDialog').dialog('open');
}
以下是錯誤我得到:
Uncaught ReferenceError: selectLanguages is not defined
當我debug
模式測試我的頁面,一切都很好,但當我在非調試模式下測試時,javascript引擎並不開心,並告訴我我的函數沒有定義,即使它存在於模擬的腳本屬中由資源加載器提供。我的猜測是,資源加載器沒有看到只有在頁面被解析後綁定的點擊函數,但我不知道如何解決這個問題。有沒有辦法明確告訴加載器加載特定的功能?
有沒有人有關於這裏發生了什麼的線索?
我前一陣子解決了這個問題,但我會接受你的答案,因爲本指南證明是非常有用的升級我的代碼。 – 2012-06-11 16:05:05