如何使弹出窗口中的链接在新标签页中打开?

10

我有一个Chrome浏览器扩展程序,其中包含一些链接。目前,当用户单击这些链接时,什么也不会发生。我希望在用户单击这些链接时能够在新标签页中打开它们。请问是否可能实现这一要求?


这里也有一些不错的答案:https://dev59.com/LGox5IYBdhLWcg3w44Lb - rogerdpack
3个回答

27

在链接中添加target="_blank"

另一种方法是将链接打开的JavaScript代码附加到链接的mousedown事件上。

您还可以使用base标签使所有链接都使用target="_blank"打开:

<head>
    <base target="_blank">
</head>

2
+1. 确保在链接中指定 http://(而不仅仅是 www.),否则它们将相对于扩展名打开。 - Kai
好的,事情是我从外部获取JavaScript,据我所知,我无法编辑它。 - user556396
@user556396,你不能编辑HTML和JavaScript吗?这是在iframe内部还是其他什么地方? - serg
我使用了以下代码:<script src="http://example.com/example.js" type="text/javascript"></script> - user556396

6

我曾经遇到过同样的问题,这是我的解决方法:

  1. Create the popup.html with link (and the links are not working when clicked as Chrome block them).
  2. Create popup.js and link it in the page: <script src="popup.js" ></script>
  3. Add the following code to 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});
                };
            })();
        }
    });
    
这样就可以了,链接应该在此之后正常工作。

你忘记在闭包中关闭变量i了。此外,chrome.tabs.create不需要任何权限。 - Rob W
我不需要闭合i,只有ln和location就足够了。你关于权限的观点是正确的,我修改了我的答案。 - lasantha

2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接