2017-10-01 1 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을 제거하고'backGround.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

Hello Deliaz, 코드를 제공해 주셔서 감사합니다. 내가 잘못하고 있다고 생각합니다. 예를 들어 "matches": [https://www.google.com/ "] 버튼을 클릭하면 내 단추가 추가되었습니다. ifplot : if (e.target.matches (' 수색')). 네, 저는 자바 스크립트에서 신인이라는 것을 알고 있지만, 좋은 해결책을 한 번 더 지적 할 수 있습니까? – Mkik

+0

@Mkik, 위의 코드는 이미 Google 웹 사이트 용으로 조정되어 있으며 즉시 사용할 수 있습니다. [Match] (https://developer.chrome.com/extensions/match_patterns) 패턴에 대한 자세한 내용을 볼 수 있습니다. 여기 [element.matches] (https://developer.mozilla.org/en-US/docs/Web/API/Element/matches)에 대한 내용입니다. – Deliaz

+0

당신은 내 하루를 Deliaz. 귀하가 제공 한이 링크는 정확히 수행해야 할 사항을 알려주었습니다. 나는 ID와 #를 사용하는 것을 잊었다. 수업으로. 당신의 도움을 주셔서 감사합니다. – Mkik