1

我有一个简单的 Chrome 扩展程序,可以在单击某些 URL 时打开新的 Chrome 选项卡。我成功地使用了一个简单的内联javascript

...
<script type="text/javascript">
function LaunchURL(oURL) {
var launchType = localStorage["LS_LaunchType"];           
    switch (launchType) {
        case "TN":
            chrome.tabs.create({ url: oURL });
            break;
        case "WN":
            chrome.windows.create({ url: oURL });
            break;
        default:
            chrome.tabs.create({ url: oURL });
            break;
    }
}
</script>   
...
<a href="javascript:LaunchURL('http://foo.com')">My hyperlink</a>

我想将 manifest.json 升级到版本 2,但现在出于安全原因阻止了内联脚本。如何打开新标签页?我试图用前面的函数创建一个单独的 javascript 文件,但没有成功。

4

1 回答 1

0

您所拥有的应该在外部 javascript 文件中正常工作,但您需要从锚标记中删除脚本。相反,只需在锚标记中添加 url 并在 javascript 中添加一个事件侦听器,以防止默认操作。

因此,在您拥有的页面中:

<script src="external.js"></script>
<a href="http://foo.com">My hyperlink</a>

在 external.js 中,您有:

document.addEventListener("DOMContentLoaded", function() {

    var anchors = document.querySelectorAll("a");
    for (var i = 0; i < anchors.length; i++) {
        anchors[i].addEventListener("click", function(event) {
           LaunchURL(event.currentTarget.href);
           event.preventDefault();
        });
    }

    function LaunchURL(oURL) {
        var launchType = localStorage["LS_LaunchType"];           
            switch (launchType) {
                case "TN":
                    chrome.tabs.create({ url: oURL });
                    break;
                case "WN":
                    chrome.windows.create({ url: oURL });
                    break;
                default:
                    chrome.tabs.create({ url: oURL });
                    break;
            }
        }
});
于 2012-10-13T17:50:30.827 回答