[PATCH 5 of 6 V2] hgweb: add docFromHTML javascript function
Laurens Holst
laurens.nospam at grauw.nl
Fri Aug 23 04:27:27 CDT 2013
Op 22-08-13 21:01, Alexander Plavin schreef:
>
> 20.08.2013, 20:41, "Laurens Holst" <laurens.nospam at grauw.nl>:
>> Op 18-08-13 00:29, Alexander Plavin schreef:
>>
>>> # HG changeset patch
>>> # User Alexander Plavin <alexander at plav.in>
>>> # Date 1376739340 -14400
>>> # Sat Aug 17 15:35:40 2013 +0400
>>> # Node ID 4b97b9c7034ef5d561021ce6f1f34a2f89764e7c
>>> # Parent 0258e9b301d3d93c820ea640fdc3d19874d01656
>>> hgweb: add docFromHTML javascript function
>>>
>>> It takes a string with HTML markup and creates DOM document from it.
>>>
>>> diff -r 0258e9b301d3 -r 4b97b9c7034e mercurial/templates/static/mercurial.js
>>> --- a/mercurial/templates/static/mercurial.js Sat Aug 17 15:59:45 2013 +0400
>>> +++ b/mercurial/templates/static/mercurial.js Sat Aug 17 15:35:40 2013 +0400
>>> @@ -329,6 +329,12 @@
>>> return xfr;
>>> }
>>>
>>> +function docFromHTML(html) {
>>> + var doc = document.implementation.createHTMLDocument('');
>>> + doc.documentElement.innerHTML = html;
>>> + return doc;
>>> +}
>> https://developer.mozilla.org/en-US/docs/Web/API/DOMImplementation.createHTMLDocument
>>
>> ...says createHTMLDocument() is not supported in IE8.
>>
>> Which Matt said earlier was important to support.
> As I understand, it's important to support vital aspects in old browsers (e.g. IE8), but some niceties, not required for the use, can rely on newer features. For example, my (accepted) patch adding a line wrap toggle doesn't support IE8, and I see no problem here too. Here we have same case: ajax scrolling adds another (nicer :) ) way to achieve the same, thus it's possible not to consider old browsers.
>
> Here I meant 'old' not by age mostly, but by amount of well-supported features.
>
>> What about using document.createDocumentFragment() instead? Then you
>> also don’t have the issue of needing to import the nodes afterwards,
>> cause document fragments are owned by the original document.
> DocumentFragment was the first solution I tried, but as I understand it's impossible to create it from a string (and here we have a string with a full HTML document). Or, rather, it's possible but only by creating a temporary object first (like createElement or createHTMLDocument) - if so, why use DocumentFragment at all? Through I'm not a JS expert (just learning :) ) so I can be wrong here - if so, please correct me.
I guess it mostly makes sense if you intend to replace an existing
<html> element with outerHTML. If you only have a direct reference to
the element, outerHTML does nothing because it creates a whole new
element. And if you create a container element, you’d be putting an
<html> element inside another again. By using a document fragment as
container you wouldn’t be doing that.
But I’m also fine with the direction you said you’d take your other mail.
>> ~Laurens
> P.S.: sorry for not replying for long, I've read both your messages soon after you sent them, and thought I answered (but actually didn't).
That’s fine :).
~Laurens
More information about the Mercurial-devel
mailing list