我正在开发一个 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);
}
});
}