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ď č. 1Toto 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);
}