This is my code (in a firefox addon)
this.something_something = function (the_actual_url) {
this.this_version = null;
try {
// Firefox 4 and later; Mozilla 2 and later
Components.utils.import("resource://gre/modules/AddonManager.jsm");
AddonManager.getAddonByID("parasites@maafire.com", function (addon) {
this_version = addon.version;
});
}
catch (ex) {
// Firefox 3.6 and before; Mozilla 1.9.2 and before
var em = Components.classes["@mozilla.org/extensions/manager;1"].getService(Components.interfaces.nsIExtensionManager);
var addon = em.getItemForID("parasites@maafire.com");
this_version = addon.version;
}
this.timervar = setTimeout(function () {
this.get_plugin_version(this.this_version);
}, 2000);
}
this.get_plugin_version = function (blah) {
alert("aa:" + blah);
}
I get the error:
Error: this.get_plugin_version is not a function Source File: chrome://mf_monkey_project/content/overlay.js Line: 476
What am I doing wrong?
Sorry about the screwed up formatting, but i deleted the bulk of the code to fit here and it made the formatting all screwy.
Because the setTimeout
callback will be executed in the global context.
You can use the bind()
[docs] method to bind the desired context and argument for the callback.
this.timervar=setTimeout( this.get_plugin_version.bind(this, this.this_version),
2000 );
If you don't want the current value of this.this_version
permanently bound as the first argument, then remove it from the .bind()
call.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.