nest: mac版Safariでpopupが出ねぇ問題
とりあえずWebRTCシグナリングはできるようになったけど、mac版のSafariだとpopup windowが出ないということに気付いた。
この小さいのをクリックすると以降は出るようになる。なので最悪コレでOKではある。。
Chromeで試す
Firefoxでは問題なく出るのを確認しているので、Chromeも試してみる。
macでも .exe
なのか。。(大嘘)
Chromeでは特に追加の許可をせずに接続できた。Firefoxと同じ挙動。
a
タグを使うことにした
普通の
今までボタンの click
ハンドラで window.open
していたのを、普通に a
タグを挿入して、タグの href
を書き換える方式に変更してみると意図した挙動になった。
Set Device Key
→ Start Session
の順にタップするとデバイスとの間にWebRTCセッションが張られる。
2タッチに増えちゃうけど、FirefoxやChromeでも期待通り動くので、まぁこれで。。
データの受け渡しは専用のattribute( "_session"
)を setAttribute
/ getAttribute
することで行っている。
close
window.close
は window.open
した物にしか使えないという記述がMDNにある。
このメソッドが許可されるのは、window.open() メソッドを用いたスクリプトにより開かれたウィンドウに対する呼び出しのみです。
が、実際は opener
を持っているWindowは閉じられるので、事前に <a rel="opener">
してあれば問題なく使える。一応、モバイル版のChrome(Android)とSafari (iOS 17)で期待通り動作することを確認した。
hash
にパラメタを保存する
↑の確認を携帯電話でやるのが超面倒だったので、 hash
部にパラメタを保管するようにコードを変えた。
Firefox拡張のoffline-qr-codeで閲覧中のURLをQRコードにできるので便利。