by shigemk2

当面は技術的なことしか書かない

JavaScriptでsrcが空文字を返す件 SOでの続き

前回の続き。

www.shigemk2.com

stackoverflow.com

以下のコードで、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パーサーの実装が違うものと推察される。