0

사용자가 웹 사이트에 대해 활성 세션을 가지고 있는지 확인하기 위해 쿠키를 찾는 스크립트가 있습니다. 이 정보를 바탕으로 적절한 팝업 html 페이지를 보여줍니다. 확장 아이콘을 클릭 할 때마다이 옵션이 실행되기를 원하지만 한 번만 실행되는 것처럼 보입니다. 나는 뭔가를 놓친 것 같아.트리거 문제 chrome.browserAction.onClicked.addListener

어떤 도움을

cookieChecker.js

chrome.browserAction.onClicked.addListener(function(tab) { 
    chrome.cookies.get({url: 'https://somesite.com', name: 'TOKEN'}, function(cookie) { 
    if (cookie) { 
    console.log('Cookie', cookie); 
    var decoded = jwt_decode(cookie.value); 
    var expired = isExpired(decoded); 
    if (expired === false) { 
    chrome.browserAction.setPopup({popup: 'loggedIn.html'}); 
     } 
    else { 
     chrome.browserAction.setPopup({popup: 'loggedOut.html'}); 
     } 
    } 
    else { 
     chrome.browserAction.setPopup({popup: 'loggedOut.html'}); 
    } 
    }) 

    function isExpired(token) { 
    var date = getExpirationDate(token); 
    if (date < (Date.now()/1000)) { 
     console.log(date, Date.now()); 
     return true; 
    } 
    return false; 
    } 

    function getExpirationDate(token){ 
    if (!token.exp) { 
     return null; 
    } 
    var expDate = token.exp; 
    return expDate; 
    } 
}); 

manifest.json을

{ 
    "manifest_version": 2, 

    "name": "Getting started example", 
    "description": "This extension shows a Google Image search result for the current page", 
    "version": "1.0", 

    "browser_action": { 
    "default_icon": "icon.png" 
    }, 
    "permissions": [ 
"activeTab", 
"cookies", 
"storage", 
"https://ajax.googleapis.com/", 
"https://somesite.com" 
    ], 
    "background": { 
    "scripts": ["jwt-decode.min.js","cookieChecker.js"] 
    } 
} 
+0

는 것은이 @wOxxOm :

당신은, 당신이 ''에 팝업을 설정해야합니다 (예 : 팝업의 자바 스크립트) 코드에서 browserAction.onClicked 이벤트를 다른 곳에서 수신으로 돌아가려면 현재 'tab.url'이 무엇이든 상관없이 스크립트가 내 사이트의 쿠키를 쿼리하도록합니다. 할 수 없습니까? – Hamed

답변

1

더 팝업은 브라우저 액션 버튼에 대해 정의 된 경우에만 화재 경우 이벤트 browserAction.onClicked을 감상 할 수있다. browserAction.setPopup({popup:...을 사용하여 팝업 페이지를 설정했거나 manifest.jsondefault_popup을 정의한 경우 브라우저 동작 버튼을 클릭 할 때마다 browserAction.onClicked 이벤트가 실행되지 않습니다. 대신 브라우저 동작 버튼을 클릭하면 팝업 창이 열립니다. ,

chrome.browserAction.setPopup({popup: ''}); 
+0

Omg 정말 고마워요! 내 loggedIn.html 및 loggedOut.html에 대한 자바 스크립트 파일에서 '' '팝업을 설정하고 작동합니다! 그러나 이제는 팝업을 표시하기 위해 버튼을 두 번 클릭해야합니다. 첫 번째 클릭은 아무 것도하지 않으며 두 번째 클릭은 팝업을 표시합니다. 왜 이런 일이 일어날 수 있겠습니까? – Hamed

+0

예상대로입니다. 팝업을 열었을 사용자 상호 작용은 이미 팝업을 정의 할 때까지 발생했습니다. 팝업을 정의하면 이후 * 모든 클릭에 대해 팝업이 열립니다. 실제 팝업을 열 수있는 프로그래밍 방식은 없습니다. 그러나, 당신은 [팝업과 같고 하나처럼 행동하는 것을 열 수 있습니다.] (http://stackoverflow.com/a/40296092/3773011). 이 코드를 약간 개선하고 프로그래밍 방식으로 팝업을 여는 질문 중 하나로 이동해야합니다. 대답은 firefox-webextensions 태그이며 Chrome에서 코드를 테스트했습니다. – Makyen