[英]Firefox addon Javascript Object Management
嘿!
我將我的添加內容提交到Mozilla add ons網站,編輯回來告訴我只有一個問題:
您的初步審核請求已獲批准。
以下是您需要在下一版本中修復的一些內容,特別是如果您想申請完全批准:
1)為了防止與用戶可能安裝的其他附加組件發生沖突,您需要將“松散”變量和函數包裝在JavaScript對象中。 您可以在https://developer.mozilla.org/en/XUL_School/JavaScript_Object_Management上查看有關如何執行此操作的示例。
所以我去了那里開始閱讀...但是很多東西對我來說都是胡言亂語而且讓自己感到困惑(根本不難做到!)
使用該頁面上的第一個示例,您能否告訴我如何修改我的xul文件?
現在它看起來像這樣:
<?xml version="1.0"?>
<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
<overlay id="quickfilterOverlay" xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
<script type="application/x-javascript" src="chrome://quickfilter/content/quickfilter.js">
</script>
</overlay>
提前致謝! [R
編輯:
已在此處上傳了整個添加內容: http : //www.mediafire.com/?ff6bjzjy6n39nx
建議將代碼封裝在命名空間中以避免名稱沖突。 這是我在插件中總是做的事情:
if(!org) var org={};
if(!org.janek) org.janek={};
org.janek.Addon = function() {
var pub = {};
var self = this;
pub.init = function() {
//
// Initialize addon, setup listeners, ...
//
}
...
self.thisIsAPrivateMethod = function(arg) {
// method that's only visible inside org.janek.Addon
}
return pub;
}();
// Init addin after window loaded
window.addEventListener("load",
org.janek.Addon.init,
false);
首先,我創建自己的命名空間org.janek,確保它不存在。 然后我添加對象Addon,它將包含我的插件的代碼。
請注意“酒吧”和“自我”物品。 應該可以從其他對象調用的每個方法都會添加到pub對象中。 私人方法被添加到自我。
更具體地說,我將quickfilter_extension更改為以下代碼(我將全局prefManager對象作為示例包含在內):
var quickfilter_extension = function() {
var pub = {};
// interface for preferences
pub.prefManager = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefBranch);
pub.init = function() {
//Initiating the progressListerner
gBrowser.addProgressListener(quickfilter_urlBarListener, Components.interfaces.nsIWebProgress.NOTIFY_STATE_DOCUMENT);
//Load the block list xml form server
quickfilter_quickfilter.request_xml();
},
pub.uninit = function() {
// Remove the progressListerner
gBrowser.removeProgressListener(quickfilter_urlBarListener);
}
return pub;
}();
現在使用prefManager對象的代碼需要通過quickfilter_extension對象:
redirectToAnotherUrl:function()
{
[ ... omitted ...]
qucikFilterRedirectCount = quickfilter_extension.prefManager.getCharPref("extensions.quickfilter_redirect_count");
[ ... omitted ...]
}
評論者正在討論您的JS代碼,建議您擁有全局變量/函數。
例如:
var x = 1;
function foo() {}
與之相比:
MyPluginName = {};
MyPluginName.x = 1;
MyPluginName.foo = function(){}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.