我正在使用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://*
列为受支持的扩展程序方案,这解释了错误,但我想要做的就是提供指向历史记录页面的链接。有没有办法做到这一点,即使它有点(或很多)令人费解?
谢谢!
编辑:补充说这是通过内容脚本完成的,我没有在最初的帖子中澄清这一点。
答案 0 :(得分:2)
代码,用于打开包含历史记录内页的新活动标签页
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 });
}
});