如何从内容脚本链接到我的扩展中的页面?

时间:2014-07-03 16:27:28

标签: javascript google-chrome-extension content-script

我正在为网站编写内容脚本,而我正在尝试在网站导航栏中的扩展程序中添加链接。我试过这个

var linksListEl = document.querySelector("#top_bar .links");
var newLink = document.createElement("li");
newLink.innerHTML = '<a href="' + chrome.extension.getURL("options/options.html") + '">Kioku</a>';
linksListEl.insertBefore(newLink, linksListEl.children[0]);

使用正确的网址正确显示,但当我点击它时,它会转到包含网址about:blank的空白页面。如果我复制链接的URL并粘贴在omnibar中,我会得到我想要的页面,所以我认为有一种机制可以防止网页链接到chrome-extension?

有没有办法正确链接

<小时/> 编辑:这是扩展名。我正在尝试在http://beta.jisho.org/的导航栏中添加一个链接到<extension>/options/options.html/。该网站的内容脚本为jisho-kioku/beta-jisho.js

https://github.com/odraencoded/jisho-kioku

P.S。:我不认为上述信息有多大价值,但是:/

1 个答案:

答案 0 :(得分:0)

您可以侧身迈出一步,而是让您的活动页面打开选项页面。

内容脚本:

var linksListEl = document.querySelector("#top_bar .links");
var newLink = document.createElement("li");
newLink.innerHTML = '<a href="#" id="optionsLink">Kioku</a>';
linksListEl.insertBefore(newLink, linksListEl.children[0]);
document.querySelector("#optionsLink").addEventListener("click", showOptions);

function showOptions(){
  chrome.runtime.sendMessage({type : "show-options"});
}

活动页面:

chrome.runtime.onMessage.addListener(
  function(request, sender, sendResponse) {
    if (request.type == "show-options") {
      chrome.tabs.update( // Or open a new tab if desired
        sender.tab.id, 
        {url: chrome.runtime.getURL("options/options.html")}
      );
    }
    /* ... */
  }
}