diff options
author | teramako | 2009-02-08 14:46:47 +0000 |
---|---|---|
committer | teramako | 2009-02-08 14:46:47 +0000 |
commit | c7495698d02c28f057231b9c051a090ace0f8b4c (patch) | |
tree | 353755637bcbd68606a1aaa04b34a134b75de00c | |
parent | b7b17c7314817b77342767dbe36ce38fecbe3781 (diff) | |
download | vimperator-plugins-c7495698d02c28f057231b9c051a090ace0f8b4c.tar.bz2 |
_libly.jsのcreateHTMLDocumentのアルゴリズムを変更
git-svn-id: http://svn.coderepos.org/share/lang/javascript/vimperator-plugins/trunk@29731 d0d07461-0603-4401-acd4-de1884942a52
-rw-r--r-- | _libly.js | 9 |
1 files changed, 9 insertions, 0 deletions
@@ -288,12 +288,21 @@ libly.$U = {//{{{ return str.replace(new RegExp('<' + ignoreTags + '(?:[ \\t\\n\\r][^>]*|/)?>([\\S\\s]*?)<\/' + ignoreTags + '[ \\t\\r\\n]*>', 'ig'), ''); }, createHTMLDocument: function(str, xmlns, doc) { + let root = document.createElementNS("http://www.w3.org/1999/xhtml", "html"); + let uhService = Cc["@mozilla.org/feed-unescapehtml;1"].getService(Ci.nsIScriptableUnescapeHTML); + let text = str.replace(/^[\s\S]*?<body([ \t\n\r][^>]*)?>[\s]*|<\/body[ \t\r\n]*>[\S\s]*$/ig, ''); + let fragment = uhService.parseFragment(text, false, null, root); + let htmlFragment = document.implementation.createDocument(null, 'html', null); + htmlFragment.documentElement.appendChild(htmlFragment.importNode(fragment,true)); + return htmlFragment; + /* うまく動いていない場合はこちらに戻してください doc = doc || window.content.document; var htmlFragment = doc.implementation.createDocument(null, 'html', null); var range = doc.createRange(); range.setStartAfter(doc.body); htmlFragment.documentElement.appendChild(htmlFragment.importNode(range.createContextualFragment(str), true)); return htmlFragment; + */ }, getFirstNodeFromXPath: function(xpath, context) { if (!xpath) return null; |