Elegante, saubere Möglichkeit, HTML in JavaScript-Dateien einzubinden?
Ich bin den Aufbau einer kleinen app mit ein paar modales dialog-Fenster. Die windows erfordern ein klein wenig HTML. Ich habe hart codiert das Fenster HTML-javascript-Bibliothek, aber bin nicht begeistert mit dieser Lösung. Gibt es eine elegantere Möglichkeit das zu tun? Es scheint, dass JavaScript nicht über multi-line strings/heredoc-syntax.
var html = "<div id='email_window'><h2>Email Share</h2><div>";
html = html + "<form action='javascript:emailDone();' method='post'>";
html = html + "<div><label for='to'>To</label><input id='to' type='text'></div>";
html = html + "<div><label for='from'>From</label><input id='from' type='text' value='" + email + "'></div>";
html = html + "<div><label for='subject'>Subject</label><input id='subject' type='text' disabled='disabled' value='" + subject + "'></div>";
html = html + "<div><label for='body'>Body</label><input id='body' type='text' disabled='disabled' value='" + body + "'></div>";
html = html + "<div><input type='submit' value='Send'><input type='button' value='Cancel' onClick='javascript:$.fancybox.close();'></div>";
html = html + "</form></div>";
$("#data").html(html);
Eingefügt, um zu verdeutlichen das original-Nachricht-
Ist eine Lösung nicht verwenden Ajax/XHR zu ziehen in der template-Datei, da der javascript-Bibliothek wird auf einer anderen domain, dass die html-Datei ist im
Es ist ein wenig wie bei ShareThis. Die Bibliothek aufgenommen werden, auf eine Reihe von verschiedenen Websites und an das onClick-Ereignis von jedem Anker-tag innerhalb divs mit Attribut sharetool="true".
Beispiel:
http://www.bar.com - index.html
<html>
...
<script type="text/javascript" src="http://www.foo.com/sharetool.js"></script>
...
<body>
<div sharetool="true">
</div>
...
</html>
InformationsquelleAutor der Frage Andrew Hopper | 2011-05-31
Du musst angemeldet sein, um einen Kommentar abzugeben.
Vorlagen. Wählen Sie Ihr Gift
Entweder Sie als inline-Skriptblöcke oder laden Sie Sie mithilfe von ajax als externe Ressourcen.
Ich persönlich benutze EJS als externe template-Dateien und bekommen nur EJS, Sie zu laden und injizieren Sie Sie in einen Behälter mit json-Daten an das template.
Und dann Dateien anzeigen, verwenden Sie die generische view-Logik.
InformationsquelleAutor der Antwort Raynos
Können Sie die HTML-als regelmäßige markup am Ende der Seite, innen eine unsichtbare div. Dann sind Sie in der Lage, zu verweisen, mit jQuery.
Müssen Sie dann programmgesteuert setzen Sie Ihre Variablen Felder (E-Mail, subject, body)
InformationsquelleAutor der Antwort Michael Berkowski
Für mehrzeilige strings (ohne Rahmen, nur javascript) gibt es mehrere Lösungen. Siehe meine Antwort auf diese Frage ALSO. Könnte man kombinieren, dass mit einigen einfachen templating:
InformationsquelleAutor der Antwort KooiInc
Gibt es 2 Lösungen tto deinem problem:
- Eine alternative für die heredoc-Syntax in javascript ist, um zu entkommen die newline char mit
\
:Den char entkam so ignoriert, und es wird nicht nehmen Platz in der resultierenden Zeichenfolge.
Können Sie auch erstellen Sie eine einfache html-Datei mit Ihrer Vorlage und in Ihrem js-Skript erstellen Sie einen versteckten iframe und laden Sie die crossdomain html-Vorlage. Sie können nun Zugriff auf das document-Objekt des iframe und retreive
body.innerHTML
. In der Theorie! Ich Habe nicht getestet, diese Lösung noch....InformationsquelleAutor der Antwort Dev in Gfx
Persönlich mag ich den Aufbau von DOM-Bäumen wie folgt:
InformationsquelleAutor der Antwort Darin Dimitrov
Hast du Recht, JS nicht heredocs oder multi-line-strings. Das heißt, die übliche Vorgehensweise, um dies ist die HTML - ...HTML, und zeigen Sie oder verstecken Sie Sie gegebenenfalls. Bist du schon mit jQuery, also bist du auf dem besten Weg dorthin:
Dann können Sie füllen das Formular aus und werfen es in die richtige Stelle:
InformationsquelleAutor der Antwort Dan Davies Brackett
Cook.js
wie es funktioniert
mehr auf cook.js!
InformationsquelleAutor der Antwort Raj Nathani