2012-01-18 216 views
33

我正在做一个Chrome扩展程序,我在这篇文章here中得到了帮助。Chrome扩展程序;在新标签页中打开popup.html的链接

我现在的问题是如何打开一个新的选项卡的铬作为链接我点击popup.html链接。我试图像其他类似的问题,如设置<a>的属性target_blank在其他类似的问题中的建议,但唯一的结果是,铬打开一个新的选项卡,但在新标签中是我的popup.html。

任何想法如何解决这个问题?

谢谢。

+0

[如何使popup.html链接在标签中打开?](http:// stackoverflow。com/questions/4549869/how-to-make-popup-html-links-open-in-tab) – rogerdpack 2016-10-20 19:50:09

回答

57

您应该使用chrome.tabs模块在新选项卡中手动打开所需的链接。尝试在popup.html使用这个jQuery的片段:

$(document).ready(function(){ 
    $('body').on('click', 'a', function(){ 
    chrome.tabs.create({url: $(this).attr('href')}); 
    return false; 
    }); 
}); 
+0

不应该将a的属性作为URL'href'。通过它在两种情况下都不起作用。它打开我一个选项卡与此网址:chrome-extension:// ceapmkdonphjngfdcjcoahdmkenpbgpn /?action = read&idnotizia = 71189 – Advicer 2012-01-19 10:20:58

+0

你对'href',对不起 - 我修复了我的答案。如果你想打开它,你需要在href中提供完整的url。目前,您有像将它们更改为完整网址''的链接。 – 2012-01-19 10:31:50

31

见我的评论https://stackoverflow.com/a/17732609/1340178


我有同样的问题,这是我的方法:

  1. 创建弹出。带链接的html(并且链接在Chrome浏览器阻止它们时单击时不起作用)。
  2. 创建popup.js并在页面链接吧:<script src="popup.js" ></script>
  3. 下面的代码添加到popup.js:

    document.addEventListener('DOMContentLoaded', function() { 
        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}); 
          }; 
         })(); 
        } 
    }); 
    

这一切,应该链接后工作。

+0

很好的解决方案,谢谢 – 2013-08-18 04:12:17

+0

完美谢谢。 – user3256143 2015-03-18 02:42:57

18

如果你不想使用jQuery,这插入到你的popup.js并点击

请记住,当它将使所有的链接在新标签中打开申报清单中的“标签”权限.json

window.addEventListener('click',function(e){ 
    if(e.target.href!==undefined){ 
    chrome.tabs.create({url:e.target.href}) 
    } 
}) 
+0

比jQuery版本好多了,谢谢! – juanignaciosl 2014-11-16 21:08:28

+1

我建议使用“activeTab”权限:https://developer.chrome.com/extensions/activeTab – 2016-10-12 02:17:23

2

其他答案的工作。为了完整起见,你也可以just addtarget="_blank"

或者,如果你有想“手动”添加特定的链接,这里有一个方法(基于其他的答案已经在这里):

popup.html

<a id="index_link">My text</a>. 

popup.js

document.addEventListener('DOMContentLoaded', function() { 
    var y = document.getElementById("index_link"); 
    y.addEventListener("click", openIndex); 
} 

function openIndex() { 
chrome.tabs.create({active: true, url: "http://my_url"}); 
} 
0

我有同样的问题。看起来康拉德的解决方案可以工作,但它一次打开多个选项卡。这只发生在第一次扩展安装之后。所以我把它改为

if (e.target.classList.contains("a-link")) { 
    chrome.tabs.create({url: $(e.target).attr('href')}); 
    return false; 
} 

和所有的按预期工作。

相关问题