Sound on click
Markus
- javascript
Hallo
Wie kann ich denn auf einem Link mit on click einen Sound abspielen lassen?
Gruss Markus
hallo ebenfalls,
Wie kann ich denn auf einem Link mit on click einen Sound abspielen lassen?
Wir haben ja beinahe schon Wochenende, also mache ich mal ne Ausnahme - bin eh zu faul, dir jetzt die Theorie auseinanderzuklamüsern, wie es eigentlich nötig wäre. Wenn ich sowas haben möchte, mache ich es so:
<script type="text/javascript">
function inhalt()
{var text =
"<html><title>Hintergrundmusik</title>" +
"<head><bgsound src='../misc/barock02.wav' loop='5'>" +
"<link rel='stylesheet' type='text/css' href='../../scripts/allgemein.css'>" +
"</head><body>" +
"<p>In diesem Fenster wird jetzt ein Musikstück in einer Endlosschleife abgespielt (Plugin zum Abspielen muß vorhanden sein). Wird das Fenster wieder geschlossen, endet auch die Musik.</p><p>Achtung! Die Musikdatei ist ca. 200 kB groß und benötigt etwas Downloadzeit</p>" +
"<input type='button' value='Fenster schließen' onClick='self.close()'></body></html>"
neu = window.open("","","top=75,left=50,height=220,width=300,scrollbars=no")
neu.document.write(text)
neu.document.close()
}
function fenster()
{inhalt()}
</script>
<input type="button" value="Musik abspielen" onclick="inhalt()">
Grüße aus Berlin
Christoph S.
Hi,
[...] Wenn ich sowas haben möchte, mache ich es so:
ich hoffe nicht ...
{var text = [...]
"</head><body>" +
Die Zeichenkette "</" beendet den <script>-Teil.
"<head><bgsound src='../misc/barock02.wav' loop='5'>" +
Was soll das sein? HTML ist es nicht.
"<input type='button' value='Fenster schließen'
ß wäre hier empfehlenswert.
onClick='self.close()'></body></html>"
Ob welchen Grundes soll hier eigentlich ein Fenster geschlossen werden?
neu = window.open("", [...]
Eine URL ist hier unbedingt erforderlich, und wenn es sich nur um "about:blank" handelt.
neu.document.write(text)
Bitte vorher das Dokument öffnen.
function fenster()
{inhalt()}
Hussa :-)
Cheatah
hallo Cheatah,
[...] Wenn ich sowas haben möchte, mache ich es so:
ich hoffe nicht ...
Doch, ungefähr alle drei Monate einmal ;-)
{var text = [...]
"</head><body>" +
Die Zeichenkette "</" beendet den <script>-Teil.
Hier nicht, weil es sich um die rechte Seite neben einem "=" handelt, also den Kram, der einer Variablen zugewiesen werden soll.
"<head><bgsound src='../misc/barock02.wav' loop='5'>" +
Was soll das sein? HTML ist es nicht.
Ich habe ja nicht behauptet, daß ich _hier_ ein valides HTML-Dokument notiert habe. Das Ganze ist ein dynamisches kleines popup.
"<input type='button' value='Fenster schließen'
ß wäre hier empfehlenswert.
Ja, unbedingt, wenns in einem statischen Dokument steht. Übrigens sind noch mehr Umlaute drin.
onClick='self.close()'></body></html>"
Ob welchen Grundes soll hier eigentlich ein Fenster geschlossen werden?
Damit man die nervige Hintergrundmusik, die darin aufgerufen wird, wieder abschalten kann.
neu.document.write(text)
Bitte vorher das Dokument öffnen.
Das ist es bereits.
function fenster()
{inhalt()}
Hussa :-)
oh, da ist durch C&P irgendwas mit reingerutscht, was ich aus Versehen nicht vollständig wieder weggelöscht habe. Richtig, diese beiden Zeilen sind unsinnig und überflüssig.
Grüße aus Berlin
Christoph S.
Hi,
{var text = [...]
"</head><body>" +
Die Zeichenkette "</" beendet den <script>-Teil.
Hier nicht, weil es sich um die rechte Seite neben einem "=" handelt, also den Kram, der einer Variablen zugewiesen werden soll.
Oh doch. Siehe http://www.w3.org/TR/html4/types.html#type-cdata, wo es heißt:
Although the STYLE and SCRIPT elements use CDATA for their data model, for these elements, CDATA must be handled differently by user agents. Markup and entities must be treated as raw text and passed to the application as is. The first occurrence of the character sequence "</" (end-tag open delimiter) is treated as terminating the end of the element's content. In valid documents, this would be the end tag for the element.
"The first occurrence", nicht "The first occurrence which appears not on the righthand side of an '='" (oder so ähnlich)
cu,
Andreas
hallo Andreas,
Die Zeichenkette "</" beendet den <script>-Teil.
Hier nicht
Oh doch.
Nein.
Die W3C-Spezifikationen sollte ich schon irgendwann mal zur Kenntnis genommen haben ;-)
Allerdings ist das, worüber wir jetzt grade debattieren, kein HTML-tag bzw. HTML-Problem, sondern eine Javascript-Eigenschaft. Richtig ist, daß es eigentlich wurscht ist, ob so ein "</" nun links oder rechts von einem "=" steht. Aber in meinem Beispiel sind diese "tags" auf der rechten Seite auch noch innerhalb von Anführungszeichen gesetzt (was Cheatah offenbar entgangen ist), sie sind Bestandteile eines strings, mit dem die Variable gefüttert wird. Insofern sind sie "maskiert" und der <script>-Teil endet dadurch eben _nicht_. Der Nachweis liegt darin, daß der _gesamte_ Script-Bereich tatsächlich ausgeführt wird, einschließlich der Dinge, die _nach_ diesem "</head>" notiert worden sind - und übrigens in allen (javascriptfähigen) Browsern ohne jede Fehlermeldung.
Du kannst dir ein Beispiel unter http://www.christoph-schnauss.de/prog/jscript/jscript05.htm anschauen. Dort ist auf "Ebene 3" genau dieses Script bereits seit langer Zeit im Einsatz.
Hinweis: die angegebene Seite ist _nicht_ valide. Das liegt daran, daß ich eben mal den Javascript-Teil in den Header-Bereich geschrieben habe, der Validator liest das dann mit und meckert folgerichtig.
Normalerweise wird das Script als externe js-Datei eingebunden - und dann ist die Seite valide. Ich habs jetzt bloß fix reingeschrieben, falls du nachschauen und den _gesamten_ Quelltext einschließlich Javascript sehen möchtest.
Grüße aus Berlin
Christoph S.
Hallo Christoph,
Die Zeichenkette "</" beendet den <script>-Teil.
Hier nicht
Oh doch.
Nein.
Doch. (Ha! ;))
Allerdings ist das, worüber wir jetzt grade debattieren, kein HTML-tag bzw. HTML-Problem,
Doch, und zwar ausschließlich.
sondern eine Javascript-Eigenschaft.
Nein, JavaScript existiert für den HTML-Parser nicht und er versteht JavaScript auch nicht.
Aber in meinem Beispiel sind diese "tags" auf der rechten Seite auch noch innerhalb von Anführungszeichen gesetzt (was Cheatah offenbar entgangen ist), sie sind Bestandteile eines strings, mit dem die Variable gefüttert wird.
Für den HTML-Parser gibt es keine »Strings«, er wendet beim Parsen lediglich die Regeln an, die der Datentyp CDATA vorschreibt.
Insofern sind sie "maskiert" und der <script>-Teil endet dadurch eben _nicht_.
Der HTML-Parser interessiert sich nicht dafür, ob der Elementinhalt JavaScript ist. Das script-Element muss dort zuende sein, wo das erste »</« nach dem script-Starttag vorkommt. Eine korrekte Maskierung wäre »</«.
Der Nachweis liegt darin, daß der _gesamte_ Script-Bereich tatsächlich ausgeführt wird, einschließlich der Dinge, die _nach_ diesem "</head>" notiert worden sind - und übrigens in allen (javascriptfähigen) Browsern ohne jede Fehlermeldung.
Das ist lediglich Fehlerkorrektur und gemäß Spec illegal, siehe Andreas' Link.
Du kannst dir ein Beispiel unter http://www.christoph-schnauss.de/prog/jscript/jscript05.htm anschauen. Dort ist auf "Ebene 3" genau dieses Script bereits seit langer Zeit im Einsatz.
Hinweis: die angegebene Seite ist _nicht_ valide. Das liegt daran, daß ich eben mal den Javascript-Teil in den Header-Bereich geschrieben habe, der Validator liest das dann mit und meckert folgerichtig.
Was für ein Quark. Wenn du dir die Fehlermeldungen genau durchliest, wirst du merken, dass der Validator die End-Tags im JavaScript-Code wie ganz normales Markup behandelt. Der Validator sieht <script type="text/javascript"> ...Zeichendaten... </title> und sagt folglich: »Dort ist ein End-Tag eines Elements title, welches nicht geöffnet wurde. Es wurde der End-Tag des script-Elements weggelassen, was gemäß DTD aber nicht erlaubt ist.« Der JavaScript-Code maskiert also nicht. Wenn du </title> und so weiter bei allen End-Tags im JavaScript-Code notierst, wirst du sehen, dass das Dokument valide ist, bis auf die Fehler in den Zeilen 106-108, welche damit aber nichts zu tun haben.
Normalerweise wird das Script als externe js-Datei eingebunden - und dann ist die Seite valide.
Ähm, du hast aber verstanden, worum es hier geht? Es ist etwas grundlegend anderes, wenn der JavaScript-Code außerhalb des Dokuments liegt. Dann kann dieser unbegrenzt viel unmaskiertes Markup enthalten, weil der HTML-Parser davon die Finger lässt. Hier ging es ausschließlich um JavaScript-Code, welcher Inhalt eines script-Elements direkt im HTML-Dokument ist.
Mathias
Hi,
Die Zeichenkette "</" beendet den <script>-Teil.
Hier nicht
Oh doch.
Nein.
Doch.
Siehe http://www.w3.org/TR/html4/types.html#type-cdata
Die W3C-Spezifikationen sollte ich schon irgendwann mal zur Kenntnis genommen haben ;-)
Aber offensichtlich nicht verstanden.
Allerdings ist das, worüber wir jetzt grade debattieren, kein HTML-tag bzw. HTML-Problem, sondern eine Javascript-Eigenschaft. Richtig ist, daß es eigentlich wurscht ist, ob so ein "</" nun links oder rechts von einem "=" steht. Aber in meinem Beispiel sind diese "tags" auf der rechten Seite auch noch innerhalb von Anführungszeichen gesetzt (was Cheatah offenbar entgangen ist),
Steht in der Definition, auf die ich verwiesen habe, irgendetwas davon, daß Anführungszeichen eine Rolle spielen, wenn es darum geht, ob </ den Script-Element-Inhalt beendet? Nein ==> es spielt keine Rolle.
Der Nachweis liegt darin, daß der _gesamte_ Script-Bereich tatsächlich ausgeführt wird, einschließlich der Dinge, die _nach_ diesem "</head>" notiert worden sind - und übrigens in allen (javascriptfähigen) Browsern ohne jede Fehlermeldung.
Aha, wenn ein Fehler von vielen gemacht wird, ist es kein Fehler mehr?
Du verläßt Dich darauf, daß dieser Fehler nicht doch mal korrigiert wird?
Kennst Du alle javascriptfähigen Browser?
Du kannst dir ein Beispiel unter http://www.christoph-schnauss.de/prog/jscript/jscript05.htm anschauen. Dort ist auf "Ebene 3" genau dieses Script bereits seit langer Zeit im Einsatz.
Hinweis: die angegebene Seite ist _nicht_ valide. Das liegt daran, daß ich eben mal den Javascript-Teil in den Header-Bereich geschrieben habe, der Validator liest das dann mit und meckert folgerichtig.
DAS ist der Nachweis, daß </ den Element-Inhalt von script beendet.
Normalerweise wird das Script als externe js-Datei eingebunden - und dann ist die Seite valide. Ich habs jetzt bloß fix reingeschrieben, falls du nachschauen und den _gesamten_ Quelltext einschließlich Javascript sehen möchtest.
Was außerhalb eines HTML-Dokumentes geschieht, hat mit HTML nichts zu tun.
cu,
Andreas
Hi!
DAS ist der Nachweis, daß </ den Element-Inhalt von script beendet.
Warum endet der eigentlich nicht erst bei </script> ? Wieso schreibt man das dann?
Grüße
Andreas
Hi,
DAS ist der Nachweis, daß </ den Element-Inhalt von script beendet.
Warum endet der eigentlich nicht erst bei </script> ?
Weil es so definiert ist.
Wieso schreibt man das dann?
Weil es so definiert ist.
Wenn Du wissen willst, warum das so definiert ist, wende Dich bitte an die Autoren des HTML-Standards (ggf. auch an die von SGML).
cu,
Andreas
Hallo Christoph,
Die Zeichenkette "</" beendet den <script>-Teil.
Hier nicht
Oh doch.
Nein.
NN4-Zeiten vergessen? Suche mal im Archiv danach.
Gruesse,
CK