通过扩展名链接到chrome://历史记录

时间:2015-04-14 19:59:43

标签: javascript jquery google-chrome-extension url-scheme

我正在使用Chrome扩展程序,通过内容脚本将一些按钮注入页面,我希望有一个链接到历史记录页面的按钮(chrome:/ /历史)。

这只会打开一个没有网址的空白标签:

window.open("chrome://history", "_blank");

有一个指向历史页面的超链接直接给我一个错误:

<a href="chrome://history" target="_blank">...</a>

Not allowed to load local resource: chrome://history/

Chrome's Extension API并未将chrome://*列为受支持的扩展程序方案,这解释了错误,但我想要做的就是提供指向历史记录页面的链接。有没有办法做到这一点,即使它有点(或很多)令人费解?

谢谢!

编辑:补充说这是通过内容脚本完成的,我没有在最初的帖子中澄清这一点。

3 个答案:

答案 0 :(得分:2)

Chrome中的

代码,用于打开包含历史记录内页的新活动标签页

chrome.tabs.create({'url': 'chrome://history', 'active': true});

答案 1 :(得分:2)

Wolf War的答案是正确的,但是,对于内容脚本,还需要一个额外的步骤。

需要 background(或更好,event)页面来处理请求,因为内容脚本无法调用该API。您需要使用Messaging

// Content script
// element is your DOM element
element.addEventListener("click", function(e) {
  chrome.runtime.sendMessage({command: "openHistory"});
});

// Event script
chrome.runtime.onMessage.addListener(function(message, sender, sendResponse) {
  if(command == "openHistory") {
    chrome.tabs.create({'url': 'chrome://history'});
  }
});

答案 2 :(得分:2)

Wolf War's response给了我一个想法,就是向我的扩展程序发送一条消息,并让它从那里启动标签,这有效。

我将此添加到我的内容脚本中,该脚本会在页面上注入按钮:

$("#history_button").click( function() {
    chrome.runtime.sendMessage({
        type: "OPEN_HISTORY"
    });
});

在我的扩展程序background script中添加了一个相应的侦听器,用于创建标签:

chrome.runtime.onMessage.addListener( function(request) {
    if (request.type == "OPEN_HISTORY") {
        chrome.tabs.create({ "url": "chrome://history", "active": true });
    }
});