4 Stimmen

Wie kann ich den JavaScript-Code reduzieren, während ich HTML erstelle?

Ich versuche, etwas HTML zu parsen, um darin Bilder zu finden.

Zum Beispiel habe ich ein dynamisches div erstellt und die Tags wie folgt geparst:

var tmpDiv = document.createElement("DIV");
tmpDiv.innerHTML = html;

Das HTML sollte scriptfrei sein, es gibt jedoch Ausnahmen, ein Code-Segment enthielt den folgenden Code unter einem Bild-Tag:

Durch Erstellen eines temporären div wurde die "onload"-Funktion selbst aufgerufen und es entstand ein JavaScript-Fehler.

Gibt es eine Möglichkeit, dem Browser mitzuteilen, JavaScript-Code zu ignorieren, während das HTML-Element erstellt wird?

Bearbeiten:
Ich habe vergessen zu erwähnen, dass ich später dieses HTML innerhalb eines div in meinem Dokument anzeigen möchte, daher suche ich nach einer Möglichkeit, Skripts zu ignorieren und keine Zeichenmanipulationen zu verwenden.

Danke!

3voto

Jamie Dixon Punkte 51361

Eine Möglichkeit dies zu tun, besteht darin, die Kinder des div-Elements zu durchlaufen und die gewünschten Ereignisbehandler zu entfernen.

Betrachten Sie das Folgende:

Wir haben eine Variable, die etwas HTML enthält, das wiederum einen onload Ereignisbehandler inline angehängt hat:

var html = ""

Wenn wir einen Container erstellen, um dieses HTML einzufügen, können wir die relevanten Ereignisbehandler durchlaufen und entfernen:

var newDiv = document.createElement("div");
$(newDiv).html(html);
$(newDiv).children().each(function(){this.onload = null});

Hier ist ein funktionierendes Beispiel: http://jsfiddle.net/XWrP3/

UPDATE

Der Fragesteller fragt, wie man gleichzeitig andere Ereignisse entfernen kann. Soweit ich weiß, gibt es keinen automatischen Weg, um alle Ereignisse zu entfernen, jedoch können Sie einfach jedes Ereignis nach Bedarf auf null setzen:

$(newDiv).children().each(function(){
    this.onload = null;
    this.onchange = null;
    this.onclick = null;
});

0voto

Ilia Choly Punkte 17300

Sie können es wirklich einfach mit jQuery so machen:

BEARBEITEN:

html

js

$("#content").append(
    $(html_string).find('img').each(function(){
        $(this).removeAttr("onload");
        console.log($(this).attr("src"));
    })
);

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X