2016-06-06 5 views
2

Hoffentlich kann ich meine Frage richtig erklären, so im Vorhinein für jede falsche Verwendung von Jargon oder andere: Ist es möglich, mit JavaScript die Original-Markup wie im Quellcode eher angezeigt dann der Code aus dem DOM, nachdem es 'geändert' wurde Angenommen, ein Element # div1 hat den eigentlichen Text, der in einem anderen Element mit der ID # div2 verwendet wird, im Quellcode ist der Text in # div1 aber in sichtbar das DOM beim Überprüfen von # div1 wird leer sein und # div2 wird diesen Text haben, Ich weiß, dass es eine Frage der Reihenfolge des Ladens der Skripte sein würde, aber ich hatte gehofft, dass es einen anderen Weg geben könnte. Hoffentlich macht das einen Sinn.Greifen Sie auf View-Source anstelle von vorbereiteten DOM zu

+0

vielleicht senden Sie eine Ajax-Anfrage und erhalten Sie volle rohe Antworttext. – Webinan

+0

Verwenden Sie $ (Dokument) .ready, um Ihre Funktion zu registrieren. Sie müssen Ihr Skript zuerst auf der Seite laden, damit Ihr Rückruf zuerst ausgeführt wird. Innerhalb Ihres Callbacks können Sie den vollständigen HTML-Code der aktuellen Seite oder Teile davon mit '.html()' z. 'var x = $ ('html'). html();' – lud1977

+0

Von dem, was ich verstand, möchten Sie Text aus # div1 nach dem Laden der Seite ausschneiden und in # div2 einfügen. Ist das korrekt? – Azamantes

Antwort

1

Ja, der einfachste Weg, um auf Original-HTML zuzugreifen, ist, den JS-Code vor anderen Skripten zu platzieren (oder nur Bibliotheken wie jQuery vorher zu platzieren).

Die zweite Möglichkeit ist, Dokument erneut mit AJAX zu laden, zu analysieren und zu bekommen, was Sie wollen. Hier ist ein Codebeispiel:

<div id="div1"> 
     Hello 
    </div> 
    <div id="div2"> 

    </div> 
    <script type="text/javascript" src="https://code.jquery.com/jquery-1.12.4.min.js"></script> 
    <script> 
     $('#div2').html($('#div1').html()) 
     $('#div1').html('') 
    </script> 
    <script> 
     alert($('#div1').html()) 
     // ajax get 
     // empty string in get request means current location 
     $.get("", function (html) { 
      var el = $(html).filter('#div1'); 
      alert(el.html()) 
     }); 
    </script> 
+0

Hallo @DimalIt, das kommt als undefined für mich zurück: [jsfiddle] (https://jsfiddle.net/gtp4y700/) – asturnick

+0

Ich vermeide speziell jsfiddle, weil Anfragen sich dort unerwartet verhalten können. Hier ist das innere Fenster von deiner Geige: [link] (https://fiddle.jshell.net/gtp4y700/show/). Für mich funktioniert es gut. Aber natürlich ist es besser, auf Ihrer eigenen Seite zu testen. UPD: Original Fiddle funktioniert auch, wenn Sie Seite aktualisieren und nicht auf Ausführen klicken. – DimaIT

+0

@DimalIt, ja funktioniert in Ordnung, vielen Dank! – asturnick

Verwandte Themen