これから紹介するサンプルは、(1)ブラウザアクションボタンが押されると (2)ページタイトルを'hoge'に変更し、(3)ボタンを押した側(つまりbackground.js)にタイトルが変更されたことを通知する、という動きをする拡張機能です。
manifest.json
{
"name": "DOM manipulation Example",
"version": "1.0",
"description": "Chrome Extension Example for manipulating DOM.",
"content_scripts": [{
"matches": ["<all_urls>"],
"js": ["content.js"]
}],
"background": {
"scripts": ["background.js"],
"persistent": false
},
"browser_action": {
"default_title": "Title Changer"
},
"permissions": [
"activeTab"
],
"manifest_version": 2
}background.js
/* When the browser-action button is clicked... */
chrome.browserAction.onClicked.addListener(function(tab) {
chrome.tabs.sendMessage(tab.id, {
command: "change_title",
title: "hoge"
},
function(msg) {
console.log("result message:", msg);
});
});ブラウザアクションボタンが押されたら、content script側に"change_title"というコマンドと、変更後タイトル名"hoge"を送信します。content script側でタイトル変更が完了したら、第三引数のコールバック関数にmsgが返ってきます。
content.js
/* Listen for messages */
chrome.runtime.onMessage.addListener(function(msg, sender, sendResponse) {
if (msg.command && (msg.command == "change_title")) {
var src = document.getElementsByTagName("title")[0].innerHTML;
var dst = msg.title;
document.getElementsByTagName("title")[0].innerHTML = dst;
sendResponse("the page title's changed: '" + src + "' -> '" + dst + "'");
}
});background.jsからきたコマンド(msg.command)が"change_title"だったら、msg.titleで指定された文字列にタイトルを変更します。※DOMの操作はcontent script側でしかできません。
実行
このChrome拡張機能をインストールして適当なWebページを開き、アイコン(ブラウザアクションボタン)を押すと、タイトルが"hoge"に変更され、以下のようなメッセージもログ出力されいるはずです。
ログ(background.js側)
result message: the page title's changed: 'try catch and ...release' -> 'hoge'
0 件のコメント:
コメントを投稿