3

ボタンが 1 つだけのポップアップを持つ非常にシンプルな Chrome 拡張機能があります。ボタンをクリックすると、新しいタブが作成され、tabs.createコールバック関数でバッジ テキストが変更されます。デバッグすると(インスペクターウィンドウを開いて)、毎回動作します。ただし、通常(インスペクタなし)で使用すると、時々しか機能せず、通常は最初の1〜2回は機能しません。特に、常に機能するとは限らない部分は、バッジのテキスト部分です。常に新しいタブが作成されますが、バッジのテキストが面倒です。

タイミングとか関係ある?これらの非同期関数は、何度も頭を悩ませてきました。言うまでもなく、時々だけでなく、いつでも動作するようにしたい.

これは、私が抱えている基本的な問題を説明するための非常に単純なバージョンのコードです。

マニフェスト.json

{
  "name": "Test",
  "version": "1.0",
  "manifest_version": 2,
  "browser_action": {
    "default_icon": {
      "19": "images/icon19.png"
    },
    "default_popup": "popup.html"
  },
  "permissions": [
    "tabs"
  ],
  "background": {
    "scripts": ["background.js"]
  }
}

popup.html

<script src="background.js"></script>

<html>
<body>

<button id="start">Start</button>

</body>
</html>

background.js

document.addEventListener('DOMContentLoaded', function () {
    var startButton = document.getElementById('start');
    startButton.addEventListener('click', function () {
        start();
    });
});


function start()
{
    // Make new tab
    chrome.tabs.create({ url: "http://google.com" }, function(tab){

        // Get random number to display in badge to test if it's working
        var randomString = String(Math.floor(Math.random()*1000));

        // Display badge
        chrome.browserAction.setBadgeText({ text: randomString});

    });
}
4

1 に答える 1