/ / "InstallTrigger" nie je definovaný - javascript, firefox, htmlunit

"InstallTrigger" nie je definovaný - javascript, firefox, htmlunit

Na mojom html stránke mám kód niečo také, kde som nainštaloval rozšírenie iba vtedy, ak je prehliadač Firefox:

if (/Firefox[/s](d+.d+)/.test(navigator.userAgent))
{
//relevant code
InstallTrigger.install(InstallXPI);
}

Funguje to v každom prehliadači. Ale keď sa rovnaká stránka používa prostredníctvom htmlunit frameworku a pomocou browserversion.FIREFOX_3_6 argument v webclient. Zobrazuje tam chybu:

com.gargoylesoftware.htmlunit.ScriptException: Wrapped
com.gargoylesoftware.htmlunit.ScriptException: Wrapped
com.gargoylesoftware.htmlunit.ScriptException: ReferenceError: "InstallTrigger" is not defined.

Akákoľvek predstavu o tom?

odpovede:

2 pre odpoveď č. 1

Toto je pripomenutie pre vás: nepoužívajte detekciu prehliadača, použite funkciu detekcie Problémy s vaším kódom:

  • InstallTrigger je funkcia motora Gecko, nie Firefoxu. Vy explicitne hľadáte "Firefox" v reťazci používateľského agenta a môže vylúčiť iné prehliadače založené na motore Gecko (napríklad SeaMonkey, K-Meleon, Camino).
  • Používateľské reťazce môžu byť falošné, čo je zrejme to, čo htmlunit robí - tvrdí, že je Firefox napriek tomu, že používa iný prehliadač. Váš kód bude mať problém potom.

Tu je návod, ako to urobiť správne:

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