在我的html页面中,我有类似这样的代码,只有在浏览器是Firefox时我才安装了扩展程序:
if (/Firefox[\/\s](\d+\.\d+)/.test(navigator.userAgent))
{
//relevant code
InstallTrigger.install(InstallXPI);
}
它适用于每个浏览器。但是当通过htmlunit框架使用相同的页面并在webclient中使用browserversion.FIREFOX_3_6参数时。它显示错误:
com.gargoylesoftware.htmlunit.ScriptException: Wrapped
com.gargoylesoftware.htmlunit.ScriptException: Wrapped
com.gargoylesoftware.htmlunit.ScriptException: ReferenceError: "InstallTrigger" is not defined.
对此有何想法?
答案 0 :(得分:3)
这是一个提醒您:不要使用浏览器检测,使用功能检测。您的代码存在问题:
InstallTrigger
是Gecko引擎的一个功能,而不是Firefox。您明确在用户代理字符串中查找“Firefox”,但可能会排除基于Gecko引擎的其他浏览器(例如SeaMonkey,K-Meleon,Camino)。以下是如何正确完成的工作:
if ("InstallTrigger" in window)
{
// Gecko platform, InstallTrigger available
InstallTrigger.install(InstallXPI);
}