GM_xmlhttpRequestで取得したresponseTextをinnerHTMLで流し込んでDOMが取れる。について
HTMLをDOMパースしてdocument.getElementByIdとか使いたくて探すと、
DOMParserかXMLSerializerを使うか、適当にcreateElementしてinnerHTMLで流し込め。
と見つかる。検証してみた。
検証コード
function log(n){ return console.log(n) }; var div = document.createElement('div'); div.innerHTML = '<input id="all" type="radio" checked="" value="" name="lr">'; try{ log(div.getElementById('all')); } catch (e) { log(e); } try{ log(div.getElementsByName('lr')); } catch (e) { log(e); } try{ log(div.getElementsByTagName('input')); } catch (e) { log(e); } try{ log(div.evaluate("//input[@id]", div, null, 7, null)); } catch (e) { log(e); }
結果
getElementsByTagNameしか動いてない。常識?element.getElementsByTagNameだけが有効で、document.getElementById、document.getElementsByTagName、document.getElementsByName、document.evaluateはダメとか?検証方法まちがってんのかな。DOMのdocumentオブジェクトについての認識もまちがってる?
AutoPagerizeについてたcreateHTMLDocumentByString関数にresponseTextを渡してDOM取れるじゃんてやろうとしてたらなんかうまくいかなかった。途中だけどで報告。