通过扩展链接到 chrome://history
Linking to chrome://history through extension
我正在开发一个 chrome 扩展程序,它通过内容脚本 将一些按钮注入页面 ,我想要一个按钮 links 到历史页面 (chrome://history).
这只会打开一个没有 URL 的空白选项卡:
window.open("chrome://history", "_blank");
并且有一个hyperlink到历史页面直接给我一个错误:
<a href="chrome://history" target="_blank">...</a>
Not allowed to load local resource: chrome://history/
Chrome's Extension API 没有将 chrome://*
列为扩展页面支持的方案,这解释了错误,但我想做的就是向历史提供 link页。有什么办法可以做到这一点,即使它有点(或很多)令人费解?
谢谢!
编辑:补充说这是通过内容脚本完成的,我没有在最初的 post.
中澄清这一点
Chrome 中的代码,用于打开带有历史内部页面的新活动选项卡
chrome.tabs.create({'url': 'chrome://history', 'active': true});
Wolf War 的回答是正确的,但是,对于内容脚本,还需要一个额外的步骤。
你需要一个background (or better, event) page to process the request, since content scripts can't call that API. You need to use 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'});
}
});
让我想到了向我的扩展本身发送消息并让它从那里启动选项卡,这很有效。
我将此添加到我的内容脚本中,以在页面上插入按钮:
$("#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 });
}
});
我正在开发一个 chrome 扩展程序,它通过内容脚本 将一些按钮注入页面 ,我想要一个按钮 links 到历史页面 (chrome://history).
这只会打开一个没有 URL 的空白选项卡:
window.open("chrome://history", "_blank");
并且有一个hyperlink到历史页面直接给我一个错误:
<a href="chrome://history" target="_blank">...</a>
Not allowed to load local resource: chrome://history/
Chrome's Extension API 没有将 chrome://*
列为扩展页面支持的方案,这解释了错误,但我想做的就是向历史提供 link页。有什么办法可以做到这一点,即使它有点(或很多)令人费解?
谢谢!
编辑:补充说这是通过内容脚本完成的,我没有在最初的 post.
中澄清这一点Chrome 中的代码,用于打开带有历史内部页面的新活动选项卡
chrome.tabs.create({'url': 'chrome://history', 'active': true});
Wolf War 的回答是正确的,但是,对于内容脚本,还需要一个额外的步骤。
你需要一个background (or better, event) page to process the request, since content scripts can't call that API. You need to use 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'});
}
});
我将此添加到我的内容脚本中,以在页面上插入按钮:
$("#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 });
}
});