それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

iPhone(iOS7) Safariのwindow.URLオブジェクトがなんか変

iPhone Safari の window.URL も window.webkitURLもどちらも new URL("http://t.co/r4t4YG4KDZ") でコンストラクタ起動しても正しくオブジェクトが生成されない。アレレレ

ちゃんとwindow.URLも window.webkitURLも存在してる。なのに、new URL("http://google.com")しても動かない・・・

window.URLの期待されるべき動作

var url = new URL("https://www.google.com/search?&q=ios")
url.search //=> "?&q=ios"
url.hostname //=> "www.google.com"
url.href //=>"https://www.google.com/search?&q=ios"
url.protocol //=>"https:"

window.URLが動かない。

手元のiOS 7のiPhoneだと動かないんです。

これバグだと思うんですけどね。

var url = new URL("https://www.google.com/search?&q=ios")
url.search //=> undefined

こまる。URLを解析するのに、正規表現とかパッケージを作るの面倒臭い

createElement("a") で対策する

var URL = window.URL || window.webkitURL
var u = new URL(url);
if(!u.hostname){
    var a = document.createElement("a")
    a.href = location.href.toString()
    u = a
}
u.hostname //=> "www.google.com"

代替案としてこれを使うことにした。

不便極まりない。なんで動かんのだろう。

参考資料

https://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement

https://developer.mozilla.org/en-US/docs/Web/API/URLUtils