aboutsummaryrefslogtreecommitdiffstats
path: root/_libly.js
diff options
context:
space:
mode:
authorteramako2009-02-08 14:46:47 +0000
committerteramako2009-02-08 14:46:47 +0000
commitc7495698d02c28f057231b9c051a090ace0f8b4c (patch)
tree353755637bcbd68606a1aaa04b34a134b75de00c /_libly.js
parentb7b17c7314817b77342767dbe36ce38fecbe3781 (diff)
downloadvimperator-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
Diffstat (limited to '_libly.js')
-rw-r--r--_libly.js9
1 files changed, 9 insertions, 0 deletions
diff --git a/_libly.js b/_libly.js
index 28b191f..9613e37 100644
--- a/_libly.js
+++ b/_libly.js
@@ -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;