2017-10-01 3 views
0

Chrome拡張機能のクリック可能なボタンカウンターのバッジを作成するには、このコードを修正する方法を教えてもらえますか?今は急速に増えていますが、私は「完了」という名前のボタンをクリックしたときにだけ募集をする必要があります。badgeTextのカウンターをクリックして

background.js

var i = 1; 

function updateIcon() { 
    i = 1; 
    chrome.browserAction.setBadgeText({ 
     text: '' 
    }); 
    chrome.browserAction.setPopup({ 
     popup: "popup.html" 
    }); 
} 


chrome.browserAction.setBadgeBackgroundColor({ 
    color: [200, 0, 0, 100] 
}); 

window.setInterval(function() { 
    chrome.browserAction.setBadgeText({ 
     text: String(i) 
    }); 
    i++; 
}, 4000); 

popup.js

document.addEventListener("DOMContentLoaded", function() { 
    //Get Reference to Functions 
    backGround = chrome.extension.getBackgroundPage(); 
    //Call Function 
    backGround.updateIcon(); 
}); 

manifest.jsonを事前に

{ 
    "name": "Bagde", 
    "description": 
    "version": "1", 
    "manifest_version": 2, 
    "background": { 
     "scripts": [ 
      "background.js" 
     ] 
    }, 
    "browser_action": { 
     "default_title": "Clickable Badge", 
     "default_popup": "popup.html" 
    } 
} 

感謝。このボタンのHTMLコードが必要な場合はお知らせください。しかし、好きなボタンを使うことができます。

+0

あなたは明らかにsetIntervalを削除し、 'doneGutton.i'をインクリメントしてsetBadgeTextを呼び出す「done」ボタンのクリックリスナーを追加する必要があります。 – wOxxOm

+0

ねえ、はい私もそれを見つけましたが、私はまだ新人の一人です。詳細を教えてください。 – Mkik

+0

いつ実際に 'updateIcon();'を実行しますか?あなたはボタンが必要な場合にポップアップがロードされたときに、なぜそれを実行しますか?btnはどこにありますか? – PredatorIWD

答えて

1

クリックを処理してそのイベントに関するメッセージをバックグラウンドスクリプトに送信すると、バッジアイコンのテキストが変更されます。

ここに解決策があります。 Googleの「Google検索」ボタンにも使用できます。

manifest.jsonを

{ 
    "manifest_version": 2, 
    "name": "Click counter", 
    "version": "1.0.0", 

    "content_scripts": [ 
     { 
     "matches": ["https://*/*"], 
     "run_at": "document_end", 
     "js": ["content-script.js"] 
     } 
    ], 

    "background": { 
     "scripts": ["background.js"] 
    }, 

    "browser_action": { 
     "default_title": "Click counter" 
    } 
} 

コンテンツ-script.js

document.body.addEventListener('click', e => { 
    if(e.target.matches('input[type="submit"]')) { // your button 
     chrome.runtime.sendMessage('clicked') 
    } 
}); 

background.js

let counter = 0; 

chrome.runtime.onMessage.addListener(message => { 
    if(message === 'clicked') { 
     counter += 1; 
     chrome.browserAction.setBadgeText({ 
      text: counter.toString() 
     }); 
    } 
}); 

ドゥあなたのウェブサイトの "マッチ" URLを設定することを忘れないでください。

+0

こんにちはDeliaz、私にそのコードを教えていただきありがとうございます、私は何か間違っていると思っています。マニフェストで私はあなたが私に言ったようにウェブサイトを追加しました: "一致":[https://www.google.com/ "]ボタンで私は私のボタンを追加しましたexamplle:if(e.target.matches( 'サーチ'))。はい、私はジャバスクリプトの新人だと知っていますが、もう一度良い解決策を教えてください。 – Mkik

+0

@Mkik、上記のコードは既にGoogleのウェブサイト用に調整されており、そのまま使用できます。 [一致](https://developer.chrome.com/extensions/match_patterns)のパターンについて詳しく読むことができます。そして、ここでは[element.matches](https://developer.mozilla.org/en-US/docs/Web/API/Element/matches)についてです。 – Deliaz

+0

あなたは私の日を作る。あなたが提供したこのリンクは、正確に何が行われる必要があるか教えてくれました。私はidと#を使用するのを忘れてしまった。クラスとして。ご協力いただきありがとうございます。 – Mkik

関連する問題