gpt4 book ai didi

javascript - "InstallTrigger"未定义

转载 作者:行者123 更新时间:2023-11-29 20:12:03 26 4
gpt4 key购买 nike

在我的 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.

对此有什么想法吗?

最佳答案

这是给你的一个提醒:不要使用浏览器检测,使用功能检测。您的代码存在的问题:

  • InstallTrigger 是 Gecko 引擎而非 Firefox 的一项功能。但是,您在用户代理字符串中明确寻找“Firefox”,并且可能会排除其他基于 Gecko 引擎的浏览器(例如 SeaMonkey、K-Meleon、Camino)。
  • 可以伪造用户代理字符串,这显然是 htmlunit 正在做的事情 - 它声称是 Firefox,尽管使用的是不同的浏览器引擎。那时您的代码会遇到麻烦。

以下是正确的做法:

if ("InstallTrigger" in window)
{
// Gecko platform, InstallTrigger available
InstallTrigger.install(InstallXPI);
}

关于javascript - "InstallTrigger"未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9092123/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com