Есть ли что-то вроде simple_html_dom.php для JavaScript? - PullRequest
1 голос
/ 16 октября 2011

Я создаю приложение для iPhone с использованием Appcelerator Titanium, и мне нужно преобразовать строку HTML (которая может содержать недопустимый HTML, например отсутствующие теги, а не мою ошибку) в объект DOM.В этом элементе DOM мне нужно найти конкретный <div> и поместить содержимое этого <div> в WebView.

В любом случае, я ищу что-то вроде простого HTML-сценария DOM , предназначенного для PHP, для поиска в DOM этого <div>.Мне бы хотелось, чтобы скрипт сканировал (недопустимую) строку HTML и получал innerHTML из <div>.

Как мне лучше всего это сделать в JavaScript?

1 Ответ

2 голосов
/ 16 октября 2011

Код ниже является базовым преобразователем строки в DOM.См. Связанный ответ для подробного объяснения.

function string2dom(html, callback){    
    /* Create an IFrame */
    var iframe = document.createElement("iframe");
    iframe.style.display = "none";
    document.body.appendChild(iframe);

    var doc = iframe.contentDocument || iframe.contentWindow.document;
    doc.open();
    doc.write(html);
    doc.close();

    function destroy(){
        iframe.parentNode.removeChild(iframe);
    }
    if(callback) callback(doc, destroy);
    else return {"doc": doc, "destroy": destroy};
}

Этот фрагмент кода не очищает HTML.Сценарии будут выполнены, внешние источники будут загружены.Объяснение кода и HTML-средства защиты можно найти по адресу этот ответ

Использование (примеры), скрипка: http://jsfiddle.net/JFSKe/:

string2dom("<html><head><title>Test</title></head></html>", function(doc, destroy){
    alert(doc.title); /* Alert: "Test" */
    destroy();
});

var test = string2dom("<div id='secret'></div>");
alert(test.doc.getElementById("secret").tagName); /* Alert: "DIV" */
test.destroy();
...