Javascript Chrome扩展:如何将本地HTML文件转换为URL以显示?
我目前正在开发一个chrome扩展,并试图将我的一个本地HTML文件制作成一个URL,这样我就可以从我的内容脚本中打开它。我找到的一个解决方案是:Javascript Chrome扩展:如何将本地HTML文件转换为URL以显示?,javascript,url,google-chrome-extension,Javascript,Url,Google Chrome Extension,我目前正在开发一个chrome扩展,并试图将我的一个本地HTML文件制作成一个URL,这样我就可以从我的内容脚本中打开它。我找到的一个解决方案是: chrome.tabs.create({url: chrome.extension.getURL('notes.html')}); 但这并不奏效。一些人报告说,内容脚本可能无法与所有的chrome扩展API一起工作。我需要这个功能从我的内容脚本工作,但,以确保它将在我需要时启动。我还发现: var urlChanged = window.url.c
chrome.tabs.create({url: chrome.extension.getURL('notes.html')});
但这并不奏效。一些人报告说,内容脚本可能无法与所有的chrome扩展API一起工作。我需要这个功能从我的内容脚本工作,但,以确保它将在我需要时启动。我还发现:
var urlChanged = window.url.createObjectURL("notes.html");
window.open(urlChanged);
这也不管用。我最后尝试:
var urlChanged = chrome.runtime.getURL("notes.html");
window.open(urlChanged);
一个新的选项卡打开,但我只得到一个空白的HTML页面。我想知道是否有人能告诉我为什么这些方法都不起作用
tl;dr My content script不希望打开和显示我创建的本地HTML文件。我使用了多种方法尝试打开它,但该文件不希望从内容脚本打开。HTML文件与内容脚本和manifest.json位于同一扩展文件夹中。在此方面的任何帮助都将不胜感激 - 要通过内容脚本中的window.open()打开扩展的页面,您必须在manifest.json中公开它。它将使您的扩展可以从web上检测到
"web_accessible_resources": [ "notes.html" ]
- 更好的解决方案是将消息从内容脚本发送到后台脚本,后台脚本可以使用chrome.tabs API打开扩展页面
这是一个更好的解决方案,因为网页选项卡上的window.open可能会被反弹出策略阻止。而且还因为您不向web公开扩展的页面
manifest.json应声明后台脚本:
内容脚本只发送一条消息:"background": { "scripts": ["background.js"], "persistent": false }
background.js完成以下工作:chrome.runtime.sendMessage({action: 'openNotes'});
chrome.runtime.onMessage.addListener((msg, sender, sendResponse) => { switch (msg.action) { case 'openNotes': chrome.tabs.create({ url: '/notes.html', active: true, index: sender.tab.index + 1, openerTabId: sender.tab.id, }); return; } });