1

いくつかの URL をクリックすると新しい Chrome タブを開く単純な 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 に答える