5

クロムエクステンションを作成しています。この拡張機能の一部は、ページ上でonClickイベントをアクティブにするためにクリックをシミュレートできる必要があります。ここでは、バックグラウンドスクリプトからのコードは次のとおりです。ここで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(); 
}); 

は、私はクロームのJavaスクリプトのデバッグから取得していますエラーメッセージです:

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 

私は権限とは何かであることを推測していますマニフェストファイルで...今は "タブ"の権限しか持っていません。クリックをシミュレートしてエラーを表示しないために有効にする必要がある他の権限がありますか?ああ、私はバージョン2マニフェストプロトコルでこれを可能にしようとしています。

おかげで、 Leinardo

答えて

4

スクリプトの実行環境は異なります拡張子とページ。

たとえば、Googleの検索フィールドにテキストを貼り付けるchrome.tabs.executeScript

使用

ファイル:manifest.jsonを

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

ファイル: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!';"}); 
}); 

でマニフェストファイルには、ホストへのアクセス許可が必要です("http://*/*")。

しかし、問題は厳密には、JavaScriptのクリックイベントにあった場合は、ここを見て How to simulate a click with JavaScript?

+0

は完全に働きました。どうもありがとうございます! –

関連する問題