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が動かない。
これバグだと思うんですけどね。
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