[phpBB Debug] PHP Warning: in file [ROOT]/ext/tas2580/seourls/event/listener.php on line 213: Undefined array key "FORUM_NAME"
jQuery parseHTML Frage - REDAXO Forum
Hallo,

Wir haben in letzter Zeit festgestellt, dass die Kommunikation via Slack viel schneller und zielführender ist als ein Beitrag im Forum. Aufgrund der neuen und besseren Möglichkeiten der Kommunikation haben wir uns entschlossen das Forum nur noch als Archiv zur Verfügung zu stellen. Somit bleibt es weiterhin möglich hier nach Lösungen zu suchen. Neue Beiträge können nicht mehr erstellt werden.

Wir empfehlen, für deine Fragen/Probleme Slack zu nutzen. Dort sind viele kompetente Benutzer aktiv und beantworten jegliche Fragen, gerne auch von REDAXO-Anfängern! Slack wird von uns sehr intensiv und meistens "rund um die Uhr" benutzt :-)
Selbst einladen kannst Du dich hier: https://redaxo.org/slack/
Benutzeravatar
webghost
Beiträge: 266
Registriert: 6. Okt 2010, 20:10
Kontaktdaten: Website

jQuery parseHTML Frage

28. Aug 2014, 15:04

Hallo

ich stehe mal wieder vor einem kleinen jQuery Problem :roll: ..und zwar komme ich einfach nicht dahinter wie ich richtig auf Elemente zugreifen kann, wenn sich das HTML in einem String befindet.

Kurz zum Hintergrund - es geht um eine Funktion in einer Browsererweiterung welche Daten von einer entfernten Seite holt. Hier habe ich das ganze mal auf's wesentliche beschränkt, die Variable htmlString enthält also die abgeholten Daten.

Code: Alles auswählen

<!doctype html>
<html>
    <head>
        <meta charset="utf-8">
        <title>test</title>
        <script src="jquery-1.11.1.min.js"></script>
        <script>
            $(document).ready(function() {

                var htmlString = '<!DOCTYPE html>' +
                        '<html>' +
                        '<head>' +
                        '<meta name="firstName" content="false">' +
                        '</head>' +
                        '<body>' +
                        '<div id="test1" name="test1">test2</div>' +
                        '<div id="test2" name="test2">test2</span>' +
                        '</body>' +
                        '</html>';

                var $ = jQuery;
                var html = $.parseHTML(htmlString);
                //var html = htmlString;
                
                var test1 = $("#test1", $(html)).attr("name");
                var test2 = $(html).find("#test2").attr("name");
                var test3 = $(html).attr("name");

                console.log(html); //object
                console.log('1: ' + test1); //undefined
                console.log('2: ' + test2); //undefined
                console.log('3: ' + test3); //firstName
                
            });
        </script>
    </head>
    <body>
    </body>
</html>
Scheinbar kann ich, wie test3 zeigt auf Elemente zugreifen, nur sobald ein Selektor ins Spiel kommt ist vorbei. Interessant finde ich dass es gleichermassen funktioniert wenn man parseHTML weg lässt :?:

Im Programm selber habe ich noch ein sehr seltsames Verhalten welches ich aber ausserhalb nicht reproduzieren kann - vom abgerufenen Quelltext kann ich ein Element anhand der ID selektieren ein anderes aber nicht.

Wär super wenn mir jemand auf die Sprünge helfen könnte

Benutzeravatar
ds
Admin
Beiträge: 247
Registriert: 10. Okt 2006, 22:58
Wohnort: Berlin
Kontaktdaten: Website

Re: jQuery parseHTML Frage

28. Aug 2014, 21:42

Das Ergebnis von parseHTML ist noch kein vollständiges DOM-Element, warum auch immer. Du kannst es z.B. per append an ein neues Element hängen, dann funktioniert es:

Code: Alles auswählen

var html = $('<div>').append($.parseHTML(htmlString));
Allerdings hast du danach eine Ebene mehr drin und müsstest deinen meta-Selektor etwas anpassen, um an firstName zu kommen:

Code: Alles auswählen

var test3 = $(html).find('meta').eq(0).attr("name");
Viele Grüße
_Dirk

Benutzeravatar
webghost
Beiträge: 266
Registriert: 6. Okt 2010, 20:10
Kontaktdaten: Website

Re: jQuery parseHTML Frage

29. Aug 2014, 09:39

jetzt hab ich's endlich kapiert :D danke Dir

aber den Sinn dahinter sehe ich nicht so ganz, die Methode ist doch genau dafür gemacht. Wozu soll es gut sein HTML zu parsen wenn man dann nicht den Dom hat :?

Zurück zu „Sonstiges“