Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 链接到chrome://history 通过扩展_Javascript_Jquery_Google Chrome Extension_Url Scheme - Fatal编程技术网

Javascript 链接到chrome://history 通过扩展

Javascript 链接到chrome://history 通过扩展,javascript,jquery,google-chrome-extension,url-scheme,Javascript,Jquery,Google Chrome Extension,Url Scheme,我正在开发一个chrome扩展,它通过内容脚本将几个按钮插入页面,我希望有一个链接到历史页面的按钮(chrome://history) 这只会打开一个没有URL的空白选项卡: window.open("chrome://history", "_blank"); 如果直接链接到历史记录页面,则会出现错误: <a href="chrome://history" target="_blank">...</a> Not allowed to load local resour

我正在开发一个chrome扩展,它通过内容脚本将几个按钮插入页面,我希望有一个链接到历史页面的按钮(chrome://history)

这只会打开一个没有URL的空白选项卡:

window.open("chrome://history", "_blank");
如果直接链接到历史记录页面,则会出现错误:

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

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

不允许加载本地资源:chrome://history/
没有将
chrome://*
列为扩展页面支持的方案,这解释了错误,但我只想提供一个指向历史页面的链接。有没有办法做到这一点,即使它有点(或很多)复杂

谢谢


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

在Chrome中编写代码,用于打开带有历史记录的内部页面的新活动选项卡

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

Chrome中用于打开新的活动选项卡和历史记录内部页面的代码

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

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

您需要一个页面来处理请求,因为内容脚本不能调用该API。您需要使用:


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

您需要一个页面来处理请求,因为内容脚本不能调用该API。您需要使用:

给了我一个想法,向我的分机本身发送一条消息,让它从那里启动标签,这很有效

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

$("#history_button").click( function() {
    chrome.runtime.sendMessage({
        type: "OPEN_HISTORY"
    });
});
并在我的扩展中添加了相应的侦听器,用于创建选项卡:

chrome.runtime.onMessage.addListener( function(request) {
    if (request.type == "OPEN_HISTORY") {
        chrome.tabs.create({ "url": "chrome://history", "active": true });
    }
});
给了我一个想法,向我的分机本身发送一条消息,让它从那里启动标签,这很有效

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

$("#history_button").click( function() {
    chrome.runtime.sendMessage({
        type: "OPEN_HISTORY"
    });
});
并在我的扩展中添加了相应的侦听器,用于创建选项卡:

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

我没有澄清这是一个内容脚本。表示内容脚本不能访问任何扩展API,除了部分的。当我运行此命令时,会出现以下错误:
无法读取未定义的属性“create”
@JosephNewman您必须在后台/事件页面发送消息才能执行此操作。我没有说明这是一个内容脚本。表示内容脚本不能访问任何扩展API,除了部分的。当我运行此操作时,它会给我以下错误:
无法读取未定义的属性“create”
@JosephNewman您必须在后台/事件页面上发送消息才能执行此操作。澄清:这是在内容脚本中完成的注入。澄清:这是在内容脚本中完成的注入。这正是我让它工作所做的!你在我发帖时回答了这个问题,谢谢!:这正是我让它工作的原因!你在我发帖时回答了这个问题,谢谢!:D