Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: DOM vs document.write
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
konys
Chciałbym dodać plik multimedialny wmv na stronę i obsługiwać zdarzenia (np. PlayStateChange). Poniżej przedstawiam kod:
  1. <head>
  2.  
  3. </head>
  4. <body>
  5. <!-- WERSJA A (DOM) --><!-- <script>
  6. script = document.createElement('script');
  7. script.setAttribute('for', 'bc_player');
  8. script.setAttribute('event', 'PlayStateChange');
  9. script.text = 'alert("blabla");';
  10. document.body.appendChild(script);
  11. </script>-->
  12. <!-- WERSJA B --><!-- (document.write) <script>
  13. src = '<script for="bc_player" event="PlayStateChange">'
  14. + 'alert ("blehbleh");'
  15. + '</scr' + 'ipt>';
  16. document.write(src);
  17. </script>
  18. -->
  19. <!-- WERSJA C (statyczny kod) --><!-- <script for="bc_player" event="PlayStateChange">
  20. alert('bleble');
  21. </script>
  22. -->
  23. <object id="bc_player" classid="CLSID:6BF52A52-394A-11d3-B153-00C04F79FAA6" width="320" height="240">
  24. <param name="URL" value="http://www.surfelf.com/Fla/pinguin.wmv">
  25. </object>
  26. </body>
  27. </html>

Gdy odkomentuję wersję A czyli dołączenie skryptu poprzez umieszczenie go w nowym węźle DOM - obsługa zdarzeń nie zadziała. Z kolei działają zarówno wersja B (skrypt dodawany poprzez document.write) oraz C (skrypt umieszczony bezpośrednio w HTML). Testowałem toto pod IE7 - dlaczego nie działa mi wersja A?
Wiktor.
Ja mam trochę inny problem, ale myślę, że w jakiś sposób związany z Twoim. Mianowicie przerabiałem dla swoich potrzeb klasę menu napisaną w JS. Instancja tej klasy zawiera uchwyt na węzeł DOM (uzyskany dzięki document.getElementById i wpisany w zmienną). Wszystko niby jest ok, po odwołaniu się do zmiennej zawierającej uchwyt można odczytać np. innerHTML (nawet go zmienić), ale nie ciągnie to za sobą efektów na stronie - tak jakby skrypt działał na kopii jakiejś... Przypuszczam, że może mieć to związek z tym, że po wpisaniu uchwytu w zmienną są jeszcze tworzone inne węzły.. być może "psuje" to poprzednie odwołania (ciekawostką jest to, że odwołanie się przez zmienną działa dla OSTATNIO stworzonego dynamicznie węzła).
Acha, orginalnie skrypt działał wypisując HTML'a poprzez document.write()... i wtedy działało smile.gif

Pozdrawiam
gekon
To-to powinno działać pod wszystkim oprócz IE. Silnik tej wspaniałej przeglądarki nie rozróżnia instrukcji 'for' od atrybutu DOM (można się spierać czy słusznie czy nie, ale byłyby to czysto teoretyczne rozważania). Rowiązaniem jest użycie specjalnej składni 'script.htmlFor' zamiast metody setAttribute.
konys
Dzięki!!! Dzięki!!! Dzięki!!!

A już myślałem, że całkiem osiwieję...
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.