Próbuję sprawdzić dostępność Flash Playera i wersję podaną poniżej
var a = new ActiveXObject("ShockwaveFlash.ShockwaveFlash");
if (a) { // a will return null when ActiveX is disabled
d = a.GetVariable("$version");
if (d) {
d = d.split(" ")[1].split(",");
playerVersion = [parseInt(d[0], 10), parseInt(d[1], 10), parseInt(d[2], 10)];
}
}
Zwraca poprawną wersję, jeśli jest dostępna.
Ale napotykam problem w następującej sytuacji -
- Załóżmy, że nie ma zainstalowanego Flashplayera
- Otworzyłem przeglądarkę (korzystam z przeglądarki Firefox) i uzyskuję dostęp do wyżej wspomnianego javascript (osadzanie w HTML), zwraca 0.0.0, co jest poprawne
- Teraz zainstalowałem Flash-Playera i uzyskuję dostęp do tego samego kodu bez zamykania przeglądarki, nadal zwraca wersję 0.0.0, co jest złe
- Ale jeśli ponownie otworzę przeglądarkę, daje prawidłowy wynik.
Kiedy przeglądarka ładuje ActiveXObject? Czy jest jakiś sposób na uzyskanie prawidłowej wersji Flash Playera bez ponownego otwierania przeglądarki?
Odpowiedzi:
0 dla odpowiedzi № 1Przypuszczam, że wersja zostanie poprawnie zwrócona po ponownym załadowaniu przeglądarki, więc możesz po prostu ustawić setInterval
jeśli nie jest dostępna lampa błyskowa, sprawdzaj co 30 sekund, czy stała się dostępna, i załaduj ponownie, jeśli stała się dostępna.
Dodatkowo, jeśli umieścisz ukryty obiekt flashna stronie, w wielu przeglądarkach sam flash przeładuje wszystkie zakładki, na których widzi obiekt flash. A może to przeglądarka sama dokonuje odświeżania, nie jestem pewien, ale wiem przynajmniej, że jeśli taki obiekt znajduje się na stronie, odświeży się w różnych przeglądarkach.