Commit 72914726 authored by Romain Courteaud's avatar Romain Courteaud

Use native Firefox DOMParser.

Provide a better html parsing, to continue working on renderJS itself.
parent 6d43204c
/*! RenderJs v0.2 */ /*! RenderJs v0.2 */
/*global $, jQuery, localStorage, jIO, window, document */ /*global $, jQuery, localStorage, jIO, window, document, DOMParser */
/*jslint evil: true, indent: 2, maxerr: 3, maxlen: 79 */ /*jslint evil: true, indent: 2, maxerr: 3, maxlen: 79 */
"use strict"; "use strict";
/* /*
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
* http://www.renderjs.org/documentation * http://www.renderjs.org/documentation
*/ */
(function (document, window, $) { (function (document, window, $, DOMParser) {
var gadget_model_dict = {}, var gadget_model_dict = {},
gadget_scope_dict = {}, gadget_scope_dict = {},
...@@ -362,8 +362,12 @@ ...@@ -362,8 +362,12 @@
}; };
if (html.constructor === String) { if (html.constructor === String) {
parsed_xml = $($.parseXML(html)); // https://developer.mozilla.org/en-US/docs/HTML_in_XMLHttpRequest
// https://developer.mozilla.org/en-US/docs/Web/API/DOMParser
// https://developer.mozilla.org/en-US/docs/Code_snippets/HTML_to_DOM
// parsed_xml = $($.parseXML(html));
// parsed_xml = $('<div/>').html(html);
parsed_xml = $((new DOMParser()).parseFromString(html, "text/html"));
settings.title = parsed_xml.find('head > title').first().text(); settings.title = parsed_xml.find('head > title').first().text();
// XXX Manage relative URL during extraction of URLs // XXX Manage relative URL during extraction of URLs
...@@ -501,7 +505,7 @@ ...@@ -501,7 +505,7 @@
// // XXX Load gadgets defined in the html // // XXX Load gadgets defined in the html
// $('body').renderJS('loadGadgetFromDom'); // $('body').renderJS('loadGadgetFromDom');
}(document, window, jQuery)); }(document, window, jQuery, DOMParser));
/** /**
......
...@@ -253,6 +253,20 @@ ...@@ -253,6 +253,20 @@
deepEqual(settings.required_js_list, [], "JS not found"); deepEqual(settings.required_js_list, [], "JS not found");
}); });
test('Non valid XML (HTML in fact...)', function () {
// Check default value returned by parseGadgetHTML
deepEqual(renderJS.parseGadgetHTML('<!doctype html><html><head>' +
'<title>Test non valid XML</title>' +
'<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">' +
'</head><body><p>Non valid XML</p></body></html>'), {
title: "Test non valid XML",
interface_list: [],
required_css_list: [],
required_js_list: [],
html: "<p>Non valid XML</p>",
});
});
///////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////
// declareGadgetKlass // declareGadgetKlass
///////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment