Lei*_*tih 5 javascript google-chrome javascript-events google-chrome-extension
我正在制作镀铬扩展程序.此扩展的一部分需要能够模拟单击以激活页面上的onClick事件.以下是后台脚本中的代码:
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();
});
Run Code Online (Sandbox Code Playgroud)
这是我从chrome的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
Run Code Online (Sandbox Code Playgroud)
我猜这是与清单文件中的权限有关...现在我只有权限"标签".我是否需要激活一些其他权限才能模拟点击而不会出现错误?哦,我正在尝试使用版本2清单协议.
谢谢,莱纳多
扩展和页面的脚本执行环境不同.
使用 chrome.tabs.executeScript
例如,将一些文字粘贴到Google搜索字段
文件:manifest.json
{
"name": "My Test",
"version": "1",
"manifest_version": 2,
"background": {
"scripts": ["background.js"]
},
"page_action": {
"default_icon": "icon.png"
},
"permissions": ["tabs", "http://*/*", "https://*/*"]
}
Run Code Online (Sandbox Code Playgroud)
文件: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!';"});
});
Run Code Online (Sandbox Code Playgroud)
在清单文件中,需要host("http://*/*"
)的权限.
但如果问题严格依赖JavaScript点击事件,请查看此处 如何使用JavaScript模拟点击?
归档时间: |
|
查看次数: |
4742 次 |
最近记录: |