当我的某个pin标签发生变化时,Firefox可以播放一些“bing”吗?
实际上,Firefox会突出显示标签图标,但我也希望收到声音通知。
答案 0 :(得分:2)
当然! :)你需要为此添加一个附件,但我可以帮助你了解相关细节。获取一个wav文件并将其放入加载项data
目录中;我打电话给我的'ding.wav'
我采取了低级别观看标签的方法,尽管这可能不适合您。还有另一种更高级别的方法也可以工作,我在下面添加了对它的描述。但是这段代码确实有用。
var {Cc, Ci, Cr} = require("chrome");
var data = require('sdk/self').data;
var tabutils = require('sdk/tabs/utils');
// utility function
function newURI(uriStr, base) {
var ios = Cc['@mozilla.org/network/io-service;1']
.getService(Ci.nsIIOService);
try {
var baseURI = base ? ios.newURI(base, null, null) : null;
return ios.newURI(uriStr, null, baseURI);
}
catch (e) {
if (e.result === Cr.NS_ERROR_MALFORMED_URI) {
throw new Error("malformed URI: " + uriStr);
} else if (e.result === Cr.NS_ERROR_FAILURE ||
e.result === Cr.NS_ERROR_ILLEGAL_VALUE) {
throw new Error("invalid URI: " + uriStr);
}
}
return null;
}
// actual function
function attachToTabs() {
tabutils.getTabs().forEach(function (tab) {
if (tab.getAttribute('pinned') === 'true') {
var browser = tabutils.getBrowserForTab(tab);
browser.addEventListener('DOMTitleChanged', function() {
try {
var sound = Cc["@mozilla.org/sound;1"].createInstance(Ci.nsISound);
sound.play(newURI(data.url('ding.wav')));
} catch (e) {
console.log(e);
}
} );
}
});
}
// call the actual function to run on startup
attachToTabs();
此代码不会主动关注固定的新标签,我会留给您。它仅在启动时运行一次以连接到现有的固定标签,因此每次固定新选项卡以使声音起作用时都必须重新启动。
-
与此方法相比,您还可以采用更高级别的方法来使用标签模块并附加到固定标签。 addon-sdk tabs module提供了一种方法,可以查看选项卡是否已固定,然后还可以附加到该选项卡。一旦连接,您就可以从内部观看标题内容以获取标题更改事件,然后在此时播放您的声音。