Google Chrome扩展程序document.title无效

时间:2011-10-05 00:43:57

标签: javascript json google-chrome-extension

这是manifest.json

中的代码
{
  "name": "Page Title changer",
  "version": "1.0",
  "description": "Change the <title></title> of a page",
  "browser_action": {
    "default_icon": "icon.png"
  },
  "content_scripts": [
    {
      "matches": ["http://*/*"],
      "js": ["changetitle.js"]
    }
  ]
}

这是来自changetitle.js文件的代码

chrome.browserAction.onClicked.addListener(function() {
    document.title = 'new page title';
});

我不明白为什么它不起作用,我在编写此扩展程序时检查了Google代码文档。

3 个答案:

答案 0 :(得分:3)

正如documentation中所述,除了某些chrome.*方法之外,您无法在内容脚本中使用chrome.extension.* API。

但是,这并不会限制您,因为您可以使用messaging从后台页面调用内容脚本。例如;

<强> background.html

<script type="application/javascript">
chrome.browserAction.onClicked.addListener(function() {
    chrome.tabs.getSelected(function (tab) {
        chrome.tabs.sendRequest(tab.id, {title: 'new page title'}, function (response) {});
    });
});
</script>

<强> changetitle.js

chrome.extension.onRequest.addListener(function (request, sender, sendResponse) {
    document.title = request.title;
});

您当然需要tabs权限才能使用此技术。

答案 1 :(得分:2)

这个适用于任何URI Scheme

<强>的manifest.json

{
  "name": "Page Title changer",
  "version": "1.0",
  "description": "Change the <title></title> of a page",
  "browser_action": {
    "default_icon": "icon.png"
  },
  "background_page": "background.html",
  "permissions": [
        "tabs"
  ]
}

<强> background.html

chrome.browserAction.onClicked.addListener(function () {
    chrome.tabs.executeScript(null, {
        file: "changetitle.js"
    });
});

<强> changetitle.js

document.title = 'new page title';

答案 2 :(得分:1)

试试这个:

chrome.browserAction.onClicked.addListener(function () {
    chrome.tabs.executeScript(null, {
        code: "document.title = 'new page title'"
    });
});