2

Chrome 拡張機能のコーディングは初めてで、現在、趣味で拡張機能を構築しようとしています。

これが私のmanifest.jsonです

    {
        "manifest_version": 2,
        "name": "LOL",
        "version": "0.1",
        "background": {
            "persistent": false,
            "scripts": ["background.js", "back.js"]
        },
        "browser_action": {
            "default_icon": "icon.png",
            "default_popup": "popup.html"
        },
        "permissions": [
            "downloads", "downloads.open", "downloads.shelf", "activeTab", "background"
        ]
    }

ここではpopup.htmlに 2 つのラジオ ボタンがあります。クリックすると、background.jsback.jsが実行されます。

ただし、2 番目のラジオ ボタンを選択しても、background.jsが実行されています。

私が観察した奇妙な動作は次のとおりです。manifest.json でスクリプトの順序を back.jsbackground.js ..入れ替えると、どのラジオ ボタンを選択しても、back.jsだけが実行されます。

スクリプトの何が問題なのかわかりません。問題が何であるかを提案してください。

これが私のpopup.jsです

    function hello() {
        chrome.tabs.executeScript({
            file: 'background.js'
        });}

        function hello2() {
            chrome.tabs.executeScript({
                file: 'back.js'
            });
        }


    var radio1 = document.getElementById('option1').value;
    if (radio1 == "folder1") {
        document.getElementById('option1').addEventListener('click', hello);
    }
    if (radio1 == "folder2") {
        document.getElementById('option2').addEventListener('click', hello2);
    }

これは background.js です

function alertlol() {

chrome.downloads.onDeterminingFilename.addListener(function(item, suggest) {
suggest({filename: "mysubdirectory/" + item.filename});
});

}
chrome.browserAction.onClicked.addListener(alertlol);
alertlol();

これはback.jsです

function alertlol1() {

chrome.downloads.onDeterminingFilename.addListener(function(item, suggest) {
suggest({filename: "mydir/" + item.filename});
});

}
chrome.browserAction.onClicked.addListener(alertlol1);
alertlol1();

これはpopup.htmlです

<!DOCTYPE html>
<html>
  <body style="width: 300px">
    Select download folder
    </br><input type="radio"  name="option1" onclick="background.js" value="folder1">Download folder one </input>
    <script type="text/javascript" src="popup.js"></script></br>
    <input type="radio"  name="option1" onclick="back.js" value="folder2">Download folder two </input>
    <script type="text/javascript" src="popup.js"></script>
  </body>
</html>

ここにコードベースがあります

https://github.com/beardlessgenius/DLM

4

1 に答える 1