私はwebkitNotifications.createNotificationのデフォルト機能を無効にしようとしていますが、Chrome拡張機能を使用すると、そうするページDOMにスクリプトを挿入できます。問題私は今、バックグラウンドページに埋め込まれているNPAPIに私の要求をプッシュするために、ページDOMからchrome.extension.sendRequest
へのアクセスが必要なのです。私は以前、コンテンツスクリプトの実行中に各ページに埋め込みオブジェクトをレンダリングしましたが、NPAPIがすべてのページに挿入されていない拡張内に埋め込まれていると、より効果的で安全です。ページからのNPAPIへのアクセスDOM
if (window.webkitNotifications)
{
(function()
{
window.webkitNotifications.originalCreateNotification = window.webkitNotifications.createNotification;
window.webkitNotifications.createNotification = function (iconUrl, title, body) {
var n = window.webkitNotifications.originalCreateNotification(iconUrl, title, body);
n.original_show = n.show;
n.show = function()
{
console.log("Chrome object", chrome);
console.log("Chrome.extension object", chrome.extension);
chrome.extension.sendRequest({'title' : title, 'body' : body, 'icon' : iconUrl});
}
return n;
}
})();
}
これは、スクリプト要素としてDOMに注入されるものです。次のように背景ページがありません:
<embed type="application/x-npapiplugz" id="plugz">
<script>
var osd = document.getElementById('plugz');
function processReq(req, sender, callback)
{
osd.notify(req.title, req.body, req.image);
console.log("NOTIFY!", req.title, req.body, req.image);
};
chrome.extension.onRequest.addListener(processReq);
</script>
からきちんとした考えをかぐ、それはあなたを助け願っています。しかし、それは基本的にこれがどのように達成されたかです。あなたの時間をありがとう! [Chromify-osd](http://launchpad.net/chromify-osd) –
私はあなたのコードを見てきました。あなたはすべての単一ページにプラグインを埋め込んでいるようです。あなたのバックグラウンドページが唯一の組み込みプラグインであり、他のページがリクエストを送信するだけの方がいいですか?私が見た別のことは、拡張でNPAPIサポートを使用していないことです。プラグインをマニフェスト経由で拡張機能に組み込んだ場合、プラグインは自動的にブラウザに登録されます。最後に、あなたのマニフェストにパーミッションとして「通知」を含めました。あなたはそれを必要とせず、ページの通知(コンテンツスクリプト)をオーバーライドします。いいね :) –