Javascript Firefox插件-无法触发任何类型的点击事件
我正在开发一个firefox插件,它将自动填充登录表单字段并登录。根据网站提供的内容,我可以访问从id的类或xpath到登录按钮的任何内容。捕获的优先级通常是id(如果存在)。不会触发点击的特定网站是: 我尝试使用Javascript Firefox插件-无法触发任何类型的点击事件,javascript,jquery,firefox-addon,Javascript,Jquery,Firefox Addon,我正在开发一个firefox插件,它将自动填充登录表单字段并登录。根据网站提供的内容,我可以访问从id的类或xpath到登录按钮的任何内容。捕获的优先级通常是id(如果存在)。不会触发点击的特定网站是: 我尝试使用$(元素)。trigger('click')或$(元素)。click(),它们都不会自动触发单击。控制台日志中的错误显示: XrayWrapper拒绝访问被调用的属性(原因:值是可调用的)。有关更多信息,请参阅。请注意,仅报告来自给定全局对象的第一次被拒绝的属性访问 我还尝试了如下所示
$(元素)。trigger('click')
或$(元素)。click()
,它们都不会自动触发单击。控制台日志中的错误显示:
XrayWrapper拒绝访问被调用的属性(原因:值是可调用的)。有关更多信息,请参阅。请注意,仅报告来自给定全局对象的第一次被拒绝的属性访问
我还尝试了如下所示的Javascript方法:
那也不行
XrayWrapper拒绝访问被调用的属性
这表明脚本运行在一个比页面内容本身拥有更高权限的环境中,这反过来会导致一些安全障碍(在一个方向上是拒绝访问错误,在另一个方向上是拒绝访问错误),因为调用方现在是不允许内容访问的部分特权代码
您可以尝试手动合成DOM事件并触发它,而不是使用jquery,可能是通过访问不安全的窗口
类似于newwindow.wrappedJSObject.MouseEvent(“单击”)
,与dispatchEvent()
相同
或者,您也可以尝试在表单上触发提交事件,而不是单击事件
另一种方法是使调用函数可以在内容窗口中访问
.callee
。尝试$(“#表单”).submit()
可能不带美元符号,tyr document.getElementById('elementId')。单击()如果这也失败了,那么你肯定可以这样做:你发布的错误可能会帮助我们解决这个问题,我不明白though@Tomanow我无法执行$(“#表单”).submit()
,因为登录按钮本身可能有需要触发的单击处理程序。感谢@Noitidart无法按ID查找元素,因为有些网站不使用ID作为登录按钮,所以我在上面的问题中进行了编辑,根据网站的结构,有时我可以访问ID、类、整个元素甚至xpath。我仍然使用模拟点击得到那个错误。谢谢