diff options
author | mitsugu oyama | 2010-10-23 17:57:44 +0900 |
---|---|---|
committer | mitsugu oyama | 2010-10-23 17:57:44 +0900 |
commit | 03139870c25fe5b4a797679de9dcc80370c7d82b (patch) | |
tree | cb84f255cb2d1d1d33c09a352db07d14b955d5d5 | |
parent | 5501d0e0108ce7e688a5cbd0429cf0df87c1374a (diff) | |
download | vimperator-plugins-03139870c25fe5b4a797679de9dcc80370c7d82b.tar.bz2 |
Minefield 4.0b8pre にて TINAMIのコンテンツを DOM で扱うように変更
2010/10/23(+900) の Minefield 4.0b8pre にて
例外発生の原因となっていた TINAMI の非正規化 HTML であっても
range.createContextualFragment(str) が例外を throw しなく
なったので、Minefield 4.0b8pre では HTML コンテンツを
DOM で扱うようにした。
-rw-r--r-- | tinami.js | 46 |
1 files changed, 41 insertions, 5 deletions
@@ -100,11 +100,47 @@ commands.addUserCommand( xhrImg.send(null); }; + let getDOMHtmlDocument=function(str){ + let doc; + let range; + try{ + if(document.implementation.createHTMLDocument){ + doc=document.implementation.createHTMLDocument(''); + range=doc.createRange(); + range.selectNodeContents(doc.documentElement); + range.deleteContents(); + doc.documentElement.appendChild(range.createContextualFragment(str)); + }else{ + doc=document.implementation.createDocument(null,'html',null); + range=document.createRange(); + range.selectNodeContents(document.documentElement); + let content=doc.adoptNode(range.createContextualFragment(str)); + doc.documentElement.appendChild(content); + } + }catch(e){ + doc=null; + } + return doc; + }; + + let getImageUrl=function(pageContents){ + let url; + let htmldoc=getDOMHtmlDocument(pageContents); + if(htmldoc){ + if(0<htmldoc.getElementsByTagName('img').length) + url=htmldoc.getElementsByTagName('img').item(0).getAttribute('src'); + else + url=''; + }else{ + let s=pageContents.indexOf('src="')+5; + let e=pageContents.indexOf('"',s); + url=pageContents.substr(s,e-s); + } + return url; + }; + let trueImgInfo=function(){ - let con=xhrImgInfo.responseText; - let s=con.indexOf('src="')+5; - let e=con.indexOf('"',s); - imgUrl=con.substr(s,e-s); + imgUrl=getImageUrl(xhrImgInfo.responseText); if(-1!=imgUrl.search(/http:\/\/img.tinami.com\/illust\/img\//i)){ saveImag(); }else{ @@ -133,4 +169,4 @@ commands.addUserCommand( saveImag(); } } -);
\ No newline at end of file +); |