Javascript &引用;“安装触发器”;没有定义
在我的html页面中,我有这样的代码,只有在浏览器为Firefox时,我才安装了扩展:Javascript &引用;“安装触发器”;没有定义,javascript,firefox,htmlunit,Javascript,Firefox,Htmlunit,在我的html页面中,我有这样的代码,只有在浏览器为Firefox时,我才安装了扩展: if (/Firefox[\/\s](\d+\.\d+)/.test(navigator.userAgent)) { //relevant code InstallTrigger.install(InstallXPI); } 它在每个浏览器中都能正常工作。但当同一页面通过htmlunit框架使用,并在webclient中使用browserversion.FIREFOX\u 3\u 6参数时。它显示了
if (/Firefox[\/\s](\d+\.\d+)/.test(navigator.userAgent))
{
//relevant code
InstallTrigger.install(InstallXPI);
}
它在每个浏览器中都能正常工作。但当同一页面通过htmlunit框架使用,并在webclient中使用browserversion.FIREFOX\u 3\u 6参数时。它显示了一个错误:
com.gargoylesoftware.htmlunit.ScriptException: Wrapped
com.gargoylesoftware.htmlunit.ScriptException: Wrapped
com.gargoylesoftware.htmlunit.ScriptException: ReferenceError: "InstallTrigger" is not defined.
有什么想法吗?这是给你的提醒:不要使用浏览器检测,使用功能检测。代码中的问题:
是Gecko引擎的一项功能,而不是Firefox。但是,您在用户代理字符串中明确查找“Firefox”,并且可能会排除基于Gecko引擎的其他浏览器(例如SeaMonkey、K-Meleon、Camino)InstallTrigger
- 用户代理字符串可能被欺骗,这显然是htmlunit所做的——尽管使用了不同的浏览器引擎,但它声称自己是Firefox。你的代码会遇到麻烦的
if ("InstallTrigger" in window)
{
// Gecko platform, InstallTrigger available
InstallTrigger.install(InstallXPI);
}
谢谢@wladimir…你是对的,功能检测更有用。谢谢你的回答