noscript? yescript!
<html> <body> <div id="div1">some value</div> <noscript> <div id="div2">another value</div> </noscript> <body> </html>
<html><body><div id="div1">some value</div><noscript><div id="div2">another value</div></noscript><body></html>
function createHTMLDocumentByString(source) { var XHTML_NS = 'http://www.w3.org/1999/xhtml'; var doctype = document.implementation.createDocumentType('html', '-//W3C//DTD HTML 4.01//EN', 'http://www.w3.org/TR/html4/strict.dtd'); var doc = document.implementation.createDocument(XHTML_NS, 'html', doctype); var range = document.createRange(); range.selectNodeContents(document.documentElement); var content = doc.adoptNode(range.createContextualFragment(source)); doc.documentElement.appendChild(content); return doc; } var s='<html><body><div id="div1">some value</div><noscript><div id="div2">another value</div></noscript><body></html>' //var d=createHTMLDocumentByString(s) var x=s.replace(/<noscript/g,'<yescript').replace(/<\/noscript/g,'<\/yescript') var d=createHTMLDocumentByString(x) //$X('//noscript',d) //$X('//yescript',d) $X('id("div1 div2")',d)
iview for fx つうか createHTMLDocumentByString なんすけど <noscript> の中の って XPath で取得できるんすかねえ。ダメっすか? 例えば http://eol.jsc.nasa.gov/sseop/clickmap/map005.htm
http://twitter.com/taizooo/statuses/8529337598
ちゃんとは調べてないですがざっくりみたかんじjavascriptがonだとnoscriptの中がなかったことになるみたいなのでダメそうです
http://twitter.com/ku/statuses/8538534484
createHTMLDocumentByString に突っ込んでためしてみた。ダメだった。もうこうなったら <noscript> を
http://twitter.com/taizooo/statuses/8546480398って replace して(略)
いや、ちょっとまて、マジでそうするか? どうせスクレイピングできればいいだけのことなんだから <noscript> を < yescript> とかに置換して $x('//yescript/area') でも動くんじゃなかしらん
http://twitter.com/taizooo/statuses/8546648432
汎用にするなら XPath も $x('//noscript') ってきたら noscript を yescript 置換してやって noscript の中の node にもアクセスできるようにするみたいな
http://twitter.com/taizooo/statuses/8546714274
<noscript> を <div class="noscript"> って置き換えるのは正しそうに見えるけど手間がかかりすぎる気がするなあああ
http://twitter.com/taizooo/statuses/8546917459
どうせ泥棒なんだから極悪非道なやり方でも全然かまわないよなあああ
http://twitter.com/taizooo/statuses/8547000924