2014-09-21 5 views
6

Ich habe eine sehr einfache HTML und Javascript.Habe ich gegen eine JavaScript-Regel verstoßen?

<html> 
<body> 
    <h1>Test function</h1> 
    <p>Hello</p> 
    <script> 
     function goodbye() { 
     document.write ("good bye"); 
     } 
     goodbye(); 
    </script> 
</body> 
</html> 

Das Ergebnis zeigt ein Hallo und guten bye String. Ich zog die Goodbye-Funktion eine eigene Datei „goodbye.js“ Also meine erste html sieht nun wie folgt

<html> 
<body> 
    <h1>Test function</h1> 
    <p>Hello</p> 
    <script src='goodbye.js'> 
     goodbye(); 
    </script> 
</body> 
</html> 

Nun, wenn ich die html wieder laufen, es zeigt nur Hallo. Ich habe nicht damit gerechnet. Was ist passiert ?

+0

wenn Sie eine externe js-Datei mit Skript-Tag einschließen. Sein Inhalt sollte leer sein. du brauchst einen weiteren Skriptblock, um die Funktion auf Wiedersehen zu schicken –

+0

Ahh, ich sehe dir viel Dank. – tadpole

+0

Ja, Sie haben 'document.write' verwendet. Es ist eine ungeschriebene Regel, dass Sie das nicht tun sollten. –

Antwort

13

Dies ist, was W3C specification sagt:

Das Skript kann in dem Inhalt des SCRIPT-Elements oder in einer externen Datei definiert werden. Wenn das Attribut src nicht festgelegt ist, müssen Benutzerprogramme den Inhalt des Elements als Skript interpretieren. Wenn der Quellcode einen URI-Wert hat, müssen Benutzeragenten den Inhalt des Elements ignorieren und das Skript über den URI abrufen.

So ist die richtige Art und Weise goodbye() zu nennen, ist ein weiteres script Tag nach dem ersten mit src Attribut hinzufügen.

+0

+1 für die Spezifikation – Seiyria

+0

+1 für die Angabe der Spezifikation – Brandon

3

Sie benötigen zwei Skript-Tags, glaube ich. Der mit src sollte leer sein, da sein Inhalt durchsrc definiert ist und Ihre Inline goodbye(); ignoriert wird. Erstellen Sie ein zweites Tag ohne src für den eingebetteten Aufruf an goodbye.

2

Wenn Sie die Eigenschaft src zu <script> hinzufügen, ignoriert der Tag-Browser alle darin enthaltenen Inhalte. So müssen Sie zusätzlichen <script> Tag hinzuzufügen:

<script src='goodbye.js'></script> 
<script> 
    goodbye(); 
</script> 
2

Sie erhalten keine Skript-Element zu verwenden, um ein Skript herunterladen und als eingebettetes Skript verwenden.

<html> 
<body> 
    <h1>Test function</h1> 
    <p>Hello</p> 
    <script src='goodbye.js'></script> 
    <script> 
     goodbye(); 
    </script> 
</body> 
</html> 

Alternativ können Sie hinzufügen Auf Wiedersehen(); Ruf an das Ende von tschüss.js.

2

Sie können kein src Attribut plus Textinhalt zu einem script Element haben. Wenn ein src-Attribut vorhanden ist, wird es verwendet und der Textinhalt ignoriert.

<script src='goodbye.js'></script> 
<script>goodbye();</script> 
Verwandte Themen