在Javascript for Chrome Extension中发布多个功能的新标签页

时间:2014-08-30 17:14:32

标签: javascript html google-chrome-extension

我正在使用Chrome扩展程序,但出于某种原因,我只能在一个函数中创建一个新选项卡,而不是在多个函数中。

代码 -

function editorial() {
  chrome.tabs.query({currentWindow: true, active: true}, function(tabs){
    var tab_url=tabs[0].url;
    var new_url=tab_url.slice(11);
    chrome.tabs.create({ url:"http://www.discuss." + new_url});        
  });
}

document.addEventListener('DOMContentLoaded', function () {
  var btn = document.getElementById('viewEditorial');
  if (btn) {
    btn.addEventListener('click', editorial);
  }
});

function friends()
{
    var frnd_name=document.getElementById('frnd1').value;
    alert(frnd_name+"rocks");
    /*chrome.tabs.query({currentWindow: true, active: true}, function(tabs){
        var tab_url=tabs[0].url;
        var new_url=tab_url.slice(11);
        chrome.tabs.create({ url:"http://www.discuss." + new_url});*/


}
document.addEventListener('DOMContentLoaded', function () {
  var btn2 = document.getElementById('viewFriends');
  if (btn2) {
    btn2.addEventListener('click', friends);
  }
});

我希望能够使用frnd_name在函数friends()的新标签页中打开一个网址。

如果未使用评论的部分,那么它工作正常并且警报消息也会出现,但如果使用了评论部分,那么由于某种原因,它不起作用。

关于错误/问题是什么的任何想法?

2 个答案:

答案 0 :(得分:0)

我认为这是因为 chrome.tabs 无法在内容脚本中使用。

你应该这样做:

  1. 使用 chrome.runtime.sendMessage
  2. 向您的后台页面发送消息
  3. 在您的后台页面中,使用 chrome.runtime.onMessage 来捕获消息
  4. 最后使用 chrome.tabs.create 创建新标签。
  5. 希望这有帮助

答案 1 :(得分:0)

嗯,问题是由于缺少'}'而不存在。 我浪费了很多时间,最终这个bug很简单。 现在,我已经吸取了教训,总是检查你的代码两次以获得正确的括号。