ピンタブの1つが変更されたときに、Firefoxで少し「ビング」を再生できますか?
実際、Firefoxはタブアイコンを強調表示していますが、音声による通知も必要です。
ピンタブの1つが変更されたときに、Firefoxで少し「ビング」を再生できますか?
実際、Firefoxはタブアイコンを強調表示していますが、音声による通知も必要です。
もちろん!:)これにはアドオンを作成する必要がありますが、関連する詳細については私がお手伝いします。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();
このコードは、固定される新しいタブを積極的に監視しません。それはあなたに任せます。起動時に1回だけ実行され、既存の固定されたタブに接続されるため、サウンドを機能させるには、新しいタブを固定するたびに再起動する必要があります。
-
このアプローチと比較して、タブモジュールを使用し、固定されているタブに接続するという、より高いレベルのアプローチを取ることもできます。addon-sdk tabsモジュールは、タブが固定されていることを確認してから、そのタブに接続する方法を提供します。アタッチしたら、タブのコンテンツを内側から見てタイトル変更イベントを確認し、その瞬間にサウンドを再生できます。