route127の日記: googlemapのURL更新上限 2
日記 by
route127
具体的にいつまでかは分からないが、昔のgoogleは緯度経度を指定してアクセス後に地図をマウスで上下左右にスクロールしてもURLは更新されなかった気がする。
いつからか地図の移動につれてURLに埋め込まれた緯度経度も更新されるようになっていたが、今回それを利用して緯度経度のリストを作ろうとしていた。
キーボードとマウスの持ち替えがなくて済むようipadを使っていたが、移動とURLのコピペを十数か所程繰り返した後、URLが更新されなくなっていることに気が付いた。
ブラウザ版と違い、メニューから現在表示中の地図に対するリンクを生成できないこともあって地図を開き直してみると症状から回復した。
何かキャッシュが詰まってたりするのか?
流石にjavascriptの流れを追い掛けてみようとは思わなかったけれどちょっと不便だ。
以前Julien DanjouがEmacsでgooglemapを見られるgoogle-maps.elを作ってたのを思い出した。
思い出しただけ。
関係ないけどjavascript絡みの変な挙動といえばIEでスラド見てる時に記事中の文字列をマウスでドラッグして選択状態にすると直近の<div class="body">の所までスクロールが巻き戻るのは何なんだろうな。
2回目以降の選択では発生しないけど、そのdivときょうだい関係にあるdiv要素の中ではまた発生する。
要約すると「<div class="body">内で任意文字列の初回選択時に開始タグまで画面が巻き戻る」とでもなるか。
history API の制限かも? (スコア:2)
JavaScript で URLを書き換えるには、history API を使用する。
https://developer.mozilla.org/ja/docs/Web/Guide/DOM/Manipulating_the_b... [mozilla.org]
Windows版Chrome で、下記手順で history.replaceState を使用していると確認した。
1. Windows版Chrome で googlemap を開く。
2. 開発者コンソールを開いて、下記のコードを入力する。
history.replaceState = function(a,b,c){console.log(a,b,c)}
3. 地図を移動する。
結果:URLが更新されず、コンソールにURLが出力される。
(ちなみに、最初は history.pushState を試してダメで、replaceState でOKだった)
「history replaceState limit」のキーワードで google 検索して下記のページ見つかった。
- https://github.com/ReactTraining/history/issues/291 [github.com]
- https://forums.developer.apple.com/thread/36650 [apple.com]
iOS 9.3 の Safari では pushState/replaceState の呼び出しが 100回までに制限されているそうだ。
1年以上前の情報なので、関係ないかもしれないが。
svn-init() {
svnadmin create .svnrepo
svn checkout file://$PWD/.svnrepo .
}
Re:history API の制限かも? (スコア:1)
確かめたらiOS11.1だった。
コピペ回数ではなくURL更新回数の制限があるならと地図を100回スクロールさせてみたけど症状を再現できなかった。
他にもWin7上のIE11やpalemoonなんかでも100回スクロールさせてみたけどURLの更新は止まらなかった。
もうちょっと調べる。
開発者コンソールのはIEのF12でも実行できた。