2016-04-05 8 views
5

ich mit dem folgenden Code Skript-Tag hinzuzufügen, nachdem bestehenden umschließenden Script-Tag (das Hinzufügen neuen Skript-Tages in HTML-Datei von Code)Script-Tag Zeile hinzufügen, nachdem die vorherige Skript indetend

return '\n' + "<script>\n" + '\t' + scriptContent + "\n</script>\n"; 

(Script Inhalt ist Hello World

der hTML-Inhalt aussehen wie

folgende

enter image description here

ich möchte, dass die zweite Öffnung Skript Tagline af sein Nach dem einschließenden Skript-Tag (in der ersten Zeile) wie kann ich das tun? die erste ‚\ n‘ tut hier helfen ...

Es ist einfach zu arbeiten, wenn ich br, fügen Sie wie kann ich diese genauebr entfernen, wenn dies die einzige Lösung ist, die ich hier habe ..

.
return "<br />" +"\n" +"<script>\n" + '\t' + scriptContent + "\n</script>\n"; 

Bitte haben Sie einen Blick auf die Geige folgenden js die beiden Script-Tag sind nicht gegliederten, nachdem Sie auf convert klicken ...

bitte einen Blick auf die folgenden jsFiddle haben (si milar für das, was ich zu benutzen, die aus SO als Referenz nahm)

JSFiddle

jsfiddle.net/rd0mn3wh/1

wie Sie, wenn Sie auf konvertieren beide Skriptobjekt klicken sehen können, wo nicht gegliederten (das neue Skript und das vorhandene Skript), wie kann ich damit umgehen, oder gibt es vielleicht einen besseren Weg?

Ich möchte, dass das neue Skript wie folgt (das Skript mit dem alerty Innere hinzufügen wird ...

.... 
ui-resourceroots="{'tdrun': './'}"> 
    </script> 
     <script> 
      alert("test"); 
     </script> 

Ich brauche die folgenden:

  1. ein neues Skript einfügen nach der angegebenen Skript-ID (im Code nach test-ui-bootstrap ')

  2. Aktualisierungsattributwert (wh en

    ist der Schlüssel zur Verfügung gestellt)

Beide unten Antworten sind hier nicht helfen ...

+0

Haben Sie dieses Duo versucht: '\ r \ n' – Jer

+1

Das klingt wie ein XY-Problem. Warum musst du das tun? –

+0

@ C0dekid.php - danke, aber es funktioniert nicht ... –

Antwort

9

Das Problem ist, dass .insertAfter() von dem führenden Weißraum Trimmen Ihrer HTML-Zeichenfolge Die Lösung ist stattdessen .after() zu verwenden. Ich habe das herausgefunden, indem ich mit deiner Geige gespielt habe und hier ist die updated fiddle.

+0

Ich habe die Geige ausprobiert und das funktioniert. Sollte die akzeptierte Antwort sein. – jdforsythe

0

Wie wäre es damit:

return "\n<script>\n\t" + scriptContent + "\n</script>\n"; 
+1

Obwohl Sie die Zeichenfolge durch Gruppieren von Zeichenfolgen gekürzt haben, ist der Code identisch. –

+0

Warum geben Sie eine Antwort, die sie bereits versucht haben? – DibsyJr

4

Das Problem hat damit zu tun, wo der zurückgegebene String process sein wird d.

\n, \r, \t usw. sind alle String JavaScript-Escape-Codes und als solche werden sie nur dann funktionieren, wenn die Zeichenfolge, die von der JavaScript-Laufzeit ausgewertet wird. Wenn Sie eine JavaScript-Zeichenfolge mit diesen Codes haben und diese Zeichenfolge an den HTML-Parser übergeben (z. B. über .innerHTML), wird der HTML-Parser aufgefordert, diese Zeichenfolge auszuwerten, und in der HTML-Parser-Welt wird <br> hinzugefügt ein Zeilenvorschub, nicht \n. Deshalb arbeitet die <br> für Sie.

Wenn also die \n von der JavaScript-Engine ausgewertet wird, wird ein Newline-Zeichen in die Zeichenfolge eingefügt, aber wenn der HTML-Parser dieses Zeilenumbruchzeichen erhält, wird es ignoriert, wie bei jedem Wagenrücklauf in Markup.

In den alten Tagen konnten wir diesen "hübschen" Code erhalten, indem wir ihn mit document.writeln() injizieren, der Ihren Inhalt schreiben und dann einen Zeilenvorschub in den HTML-Code einfügen würde. Sie können dies heute noch tun, aber es wird nicht als eine gute Übung angesehen, da Sie den Code inline in das HTML-Dokument einfügen müssen, sonst überschreiben Sie das gesamte DOM.

Wenn dies etwas ist, das Sie nur wollen, weil es Sie warm und verschwommen fühlen lässt, würde ich empfehlen, es zu vergessen und weiterzugehen.

Schließlich hier ist der DOM-Standard Weg, um neue Elemente zu erstellen und sie in die DOM-Injektion:

var o = document.getElementById("output"); 
 
var scriptContent = "alert('Hello World!')"; 
 
var s = document.createElement("script"); 
 
var t = document.createTextNode(scriptContent); 
 
s.appendChild(t); 
 
o.appendChild(s);
<div id="output"> 
 

 
</div>

+0

HI Scott, bitte werfen Sie einen Blick auf die folgende jsFiddle, wie Sie sehen können, wenn Sie auf beide Skript-Objekt senden, wo nicht eingerückt (das neue Skript und das vorhandene Skript), wie kann ich damit umgehen? Vielen Dank! https://jsfiddle.net/rd0mn3wh/1/ –

+0

Bitte sehen Sie meine Update-Frage, jede Richtung, wie Sie den Code verbessern können Vielen Dank sir –

+0

@JhonD Sie müssen uns sagen, wo Sie das Skript wollen, weil es so aussieht, wie es geht genau dort, wo du es gesagt hast. –