Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> DOM vs document.write, Dlaczego skrypt działa poprzez document.write a nie poprzez metody DOM
konys
post
Post #1





Grupa: Zarejestrowani
Postów: 100
Pomógł: 7
Dołączył: 5.11.2005

Ostrzeżenie: (0%)
-----


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?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
gekon
post
Post #2





Grupa: Zarejestrowani
Postów: 614
Pomógł: 7
Dołączył: 10.11.2003
Skąd: Rzeszów/Kraków

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 27.12.2025 - 15:39