我正在开发一个 firefox 扩展,我想模拟:hover像 firebug 这样的元素的状态。
在my-script-file.js我将mousehover使用self.port元素对象发出,例如$('#myDiv')[0]注意 [0] 是获取 DOM 元素而不是 jquery 对象。
我的问题是这段代码不起作用,并且会domUtil.setContentState(step.element, 0x04);在线引发错误。错误是:
我进入了setContentState()定义的 firefox 文档站点,我注意到我的元素必须是nsIDOMElement我的问题的一个实例,这里是如何将我的选择转换element为nsIDOMElement对象。
或者实际上我的问题是如何强制使用或 jquery函数:hover选择的元素?document.getElementById$()
我阅读了萤火虫源代码并提出了这个片段:
var {Cc, Ci, Cr} = require("chrome");
var domUtil = Cc["@mozilla.org/inspector/dom-utils;1"].getService(Ci.inIDOMUtils);
exports.main = function() {
var attachToTab = function(tab)
{
if(currentWorker)
currentWorker.destroy();
currentWorker = tab.attach({
contentScriptFile: [data.url("jquery.js"), data.url("my-script-file.js")]
});
currentWorker.port.on('mousehover', function(element){
console.log('doing setContentState :hover');
domUtil.setContentState(element, 0x04);
});
}
require("widget").Widget({
id: "MyAddonBtn",
label: "Sample",
contentURL: data.url("images/addon.ico"),
onClick: function(){
attachToTab(tabs.activeTab);
}
});
}