From 0d52c5b683b4d90d4d2cc9caf4d30877f8be7013 Mon Sep 17 00:00:00 2001 From: mattn Date: Fri, 18 Apr 2008 09:49:53 +0000 Subject: lang/javascript/vimperator-plugins/trunk/direct_bookmark.js: * タグの補完が動かなくなっていたので修正 * parseHTMLで無視するタグを設定出来る様にし、若干だがスピードアップ git-svn-id: http://svn.coderepos.org/share/lang/javascript/vimperator-plugins/trunk@9692 d0d07461-0603-4401-acd4-de1884942a52 --- direct_bookmark.js | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) (limited to 'direct_bookmark.js') diff --git a/direct_bookmark.js b/direct_bookmark.js index d6e5ce1..e1eb9c8 100644 --- a/direct_bookmark.js +++ b/direct_bookmark.js @@ -1,6 +1,6 @@ // Vimperator plugin: 'Direct Post to Social Bookmarks' // Version: 0.03 -// Last Change: 17-Apr-2008. Jan 2008 +// Last Change: 18-Apr-2008. Jan 2008 // License: Creative Commons // Maintainer: Trapezoid - http://unsigned.g.hatena.ne.jp/Trapezoid // Parts: @@ -135,8 +135,10 @@ } // copied from Pagerization (c) id:ofk - function parseHTML(str){ + function parseHTML(str, ignore_tags){ str = str.replace(/^[\s\S]*?]+?)?>|<\/html\s*>[\S\s]*$/ig, ''); + if (ignore_tags && ignore_tags instanceof Array) + str = str.replace(new RegExp('<' + ignore_tags.join('[^>]+?>|<') + '[^>]+?>', 'ig'), ''); var res = document.implementation.createDocument(null, 'html', null); var range = document.createRange(); range.setStartAfter(window.content.document.body); @@ -253,7 +255,7 @@ xhr.open("GET","http://b.hatena.ne.jp/my",false); xhr.send(null); - var mypage_html = parseHTML(xhr.responseText); + var mypage_html = parseHTML(xhr.responseText, ['img']); var tags = getElementsByXPath("//ul[@id=\"taglist\"]/li/a",mypage_html); tags.forEach(function(tag){ @@ -328,7 +330,7 @@ xhr.open("GET","http://clip.livedoor.com/clip/add?link=http://example.example/",false); xhr.send(null); - var mypage_html = parseHTML(xhr.responseText); + var mypage_html = parseHTML(xhr.responseText, ['img']); var tags = getElementsByXPath("id(\"tag_list\")/span",mypage_html); tags.forEach(function(tag){ @@ -366,7 +368,7 @@ tags = tags.concat(currentService.tags(user,password)); }); // unique tags - for(var i = tags.length; i --> 0; tags.indexOf(tag) == i || tags.splice(i, 1)); + for(var i = tags.length; i --> 0; tags.indexOf(tags[i]) == i || tags.splice(i, 1)); liberator.plugins.direct_bookmark.tags = tags.sort(); } liberator.commands.addUserCommand(['btags'],"Update Social Bookmark Tags",getTags,{}); -- cgit v1.2.3