前回の続き。
以下のコードで、srcメソッドで空文字列が返ってくる問題。
// returns whole url example var d1 = new DOMParser().parseFromString("<html><body><script id='hoge' src='http://stackoverflow.com/'></script></body></html>", "text/html"); d1.getElementById('hoge').src; // "http://stackoverflow.com/" // returns empty string example var d2 = new DOMParser().parseFromString("<html><body><script id='hoge' src='//stackoverflow.com'></script></body></html>", "text/html"); d2.getElementById('hoge').src; // ""
こうすたらいいんじゃないの?っていうコメントをいただく。
d2.getElementById("hoge").getAttribute("src")
Looks like the new DOMParser DOM doesn't know its document location so it cannot resolve relative urls.
DOMパーサーがscriptタグのsrcを認識できていないのでは?というコメントをいただく。
var d2 = new DOMParser().parseFromString("<html><body><script id='hoge' src='hogehoge'></script></body></html>", "text/html"); d2.getElementById('hoge').src; // ""
これでもダメで、DOMパーサーがsrcの中身を見るときに、正規表現か何かでプロトコルを見ているのではないか、と思われる。Chromeでは。というのも、Firefoxでは再現しないから。おそらくブラウザごとにDOMパーサーの実装が違うものと推察される。