Javascript 创建chrome扩展选项卡中的URL不起作用

Javascript 创建chrome扩展选项卡中的URL不起作用,javascript,google-chrome-extension,Javascript,Google Chrome Extension,我正在创建一个chrome扩展,它访问api并解析json提要以获取数据。其中一个数据是一个链接,我希望在新选项卡中打开该链接。我使用chrome.create.tabs来完成。但不是打开带有指定url的选项卡,而是像这样打开 铬-extension://app_id/%22http://www.twitch.tv/imaqtpie%22 这是我的popup.js document.addEventListener('DOMContentLoaded', init); function ini

我正在创建一个chrome扩展,它访问api并解析json提要以获取数据。其中一个数据是一个链接,我希望在新选项卡中打开该链接。我使用chrome.create.tabs来完成。但不是打开带有指定url的选项卡,而是像这样打开

铬-extension://app_id/%22http://www.twitch.tv/imaqtpie%22

这是我的popup.js

document.addEventListener('DOMContentLoaded', init);

function init(){
    var elem = document.getElementById('Add');
    elem.addEventListener('click',func);
}
function func(){

  var xhr = new XMLHttpRequest();
  xhr.open("GET", "https://api.twitch.tv/kraken/search/streams?q=league%20of%20legends", true);
  xhr.onreadystatechange = function() {
    if (xhr.readyState == 4) {
      // innerText does not let the attacker inject HTML elements.
      var qtpie=JSON.parse(xhr.responseText);
      var display_name = JSON.stringify(qtpie.streams[0].channel.display_name);
      var stream_status = JSON.stringify(qtpie.streams[0].channel.status);
      var stream_url=JSON.stringify(qtpie.streams[0].channel.url);
          var res = display_name+" : "+stream_status+"\n"+stream_url;
          console.log(stream_url);


          var a = document.createElement('a');
          var linkText = document.createTextNode(res);
          a.appendChild(linkText);

        a.setAttribute('href', stream_url);
       a.addEventListener('click', link_handler(stream_url));
          document.getElementById("status").appendChild(a);

        var magic=activateLinks();
    //  document.getElementById("status").innerText = res;
    }
  }
  xhr.send();

}
function activateLinks()
{
  var links = document.getElementsByTagName("a");
  for (var i = 0; i < links.length; i++) {
      (function () {
          var ln = links[i];
          var location = ln.href;
          ln.onclick = function () {
              chrome.tabs.create({active: true, url: location});
          };
      })();
  }
}

function link_handler(url)
{
  // Only allow http and https URLs.
   if (url.indexOf('http:') != 0 && url.indexOf('https:') != 0) {
     return;
   }
   chrome.tabs.create({url: url});

}
我想打开新选项卡,而不是chrome-extension://app_id/%22http://www.twitch.tv/imaqtpie
. 提前谢谢。顺便说一句,使用
不起作用。

所以问题是url。当使用
chrome.tabs.create
时,您的url不正确,因为
%22
表示中的字符
。当您在html中获得元素时,您应该在url中删除它。很高兴它有帮助!

当使用
chrome.tabs.create
时,您的url似乎不正确,因为
%22
表示字符
in。当你在
html
中获取元素时,你应该在url中获得它。我尝试使用javascript正则表达式删除“charatcher”。它仍然给出相同的错误。嗯,你检查了
chrome.tabs中的所有url了吗?create
是完全限定的url,其中包括一个方案(即“”,而不是“www.google.com”)。相对URL将与扩展中的当前页面相对。@gui47:出于某种奇怪的原因,我使用正则表达式仅解析句子的第一个和最后一个“”,它起了作用(以前我使用正则表达式删除“”的所有内容)。感谢您的帮助。如果您想创建答案,我将接受它。
"video_banner":null,
            "background":null,
            "profile_banner":null,
            "profile_banner_background_color":null,
            "partner":true,
            "url":"http://www.twitch.tv/imaqtpie",
            "views":91792487