5

Tworzę rozszerzenie chrome. Jedna część tego rozszerzenia musi być w stanie symulować kliknięcie, aby aktywować zdarzenia onClick na stronie. Oto kod ze skryptu w tle:Symulowane kliknięcie w rozszerzeniu Chrome

function checkForValidUrl(tabId, changeInfo, tab) { 
    // If the letter 'g' is found in the tab's URL... 
    if (tab.url.indexOf('maps') > -1 && tab.url.indexOf('google') > -1) { 
    // ... show the page action. 
    chrome.pageAction.show(tabId); 

    } 
}; 

// Listen for any changes to the URL of any tab. 
chrome.tabs.onUpdated.addListener(checkForValidUrl); 


chrome.pageAction.onClicked.addListener(function() { 
    document.getElementById("paneltoggle2").click(); 
}); 

tutaj jest komunikat o błędzie, że otrzymuję od skryptu Java debugowania Chrome:

Error in event handler for 'pageAction.onClicked': Cannot call method 'click' of null TypeError: Cannot call method 'click' of null 
    at chrome-extension://deogcaeekneeagffbhdlflichjlodlem/js/main.js:26:42 
    at chrome.Event.dispatchToListener (event_bindings:387:21) 
    at chrome.Event.dispatch_ (event_bindings:373:27) 
    at dispatchArgs (event_bindings:249:22) 
    at Object.chromeHidden.Event.dispatchEvent (event_bindings:257:7) event_bindings:377 
chrome.Event.dispatch_ event_bindings:377 
dispatchArgs event_bindings:249 
chromeHidden.Event.dispatchEvent event_bindings:257 

ja domyślam się, że to jest coś zrobić z uprawnieniami w pliku manifestu ... W tej chwili mam tylko uprawnienia do "kart". Czy są jakieś inne uprawnienia, które muszę aktywować, aby zasymulować kliknięcie i nie uzyskać błędu? Och i próbuję to zrobić z manifestem wersji 2.

Dzięki, Leinardo

Odpowiedz

4

środowisk wykonywania skryptu są różne dla rozszerzenie i strona.

Stosować chrome.tabs.executeScript

Na przykład, aby wkleić tekst do pola wyszukiwania Google

pliku: manifest.json

{ 
    "name": "My Test", 
    "version": "1", 
    "manifest_version": 2, 
    "background": { 
     "scripts": ["background.js"] 
    }, 
    "page_action": { 
     "default_icon": "icon.png" 
    }, 
    "permissions": ["tabs", "http://*/*", "https://*/*"] 
} 

pliku: background.js

function checkForValidUrl(tabId, changeInfo, tab) { 
    if (tab.url.indexOf("g") > -1) { 
     chrome.pageAction.show(tabId); 
    } 
} 

chrome.tabs.onUpdated.addListener(checkForValidUrl); 

chrome.pageAction.onClicked.addListener(function(tab) { 
    chrome.tabs.executeScript(tab.id, {code: "document.getElementById('gbqfq').value = 'Hello World!';"}); 
}); 

W plik manifestu wymaga pozwolenia na hosta ("http://*/*").

Ale jeśli pytanie było ściśle JavaScript na kliknij zdarzenie, tutaj How to simulate a click with JavaScript?

+0

Pracował idealnie. Dziękuję bardzo! –

Powiązane problemy