我的Firefox扩展程序生成事件,例如单击.作为响应,Web应用程序尝试打开一个新窗口.然而,当Popup拦截器开始时,它被Firefox阻止.但是,如果我手动点击一个按钮并在Web应用程序尝试打开窗口时响应,那么它就会通过.
我的问题是为什么我的扩展程序生成的事件不被视为"受信任",并且在用户点击时以相同的方式处理?是否有一些后门来实现这种行为?
我正在制作镀铬扩展程序.此扩展的一部分需要能够模拟单击以激活页面上的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 …Run Code Online (Sandbox Code Playgroud) javascript google-chrome javascript-events google-chrome-extension
我正在尝试调度一个 IsTrusted 事件来模拟用户单击屏幕上的某个位置。我正在通过 Chrome 扩展尝试这一点,尽管我运气不太好。控制台中没有错误,并且我的巨大屏幕按钮没有被点击。这是我的background.js:
chrome.browserAction.onClicked.addListener(function(tab) {
chrome.tabs.query({active: true, currentWindow: true}, function(tabs) {
var activeTab = tabs[0];
chrome.runtime.onMessage.addListener(
function(request, sender, sendResponse) {
if( request.message === "clickElement" ) {
chrome.debugger.attach({tabId:tab.id}, "1.2", function(debugg) {
chrome.debugger.sendCommand(
{tabId:tab.id}, "Debugger.enable", {},
function() {
chrome.debugger.sendCommand({tabId:tab.id}, "Input.dispatchMouseEvent",
{
type:"mousePressed",
x:parseFloat(request.x),
y:parseFloat(request.y)
})
})
})
}
}
);
chrome.tabs.sendMessage(activeTab.id, {"message": "runbot"});
});
});
Run Code Online (Sandbox Code Playgroud)
我content.js只是发送带有按钮坐标的 clickElement 消息。
有任何想法吗?