Chrome52 の変更点 ~Backspace 使えないとかありえない!!~
◆ Backspace で前のページに戻れなくなった
◆ 拡張機能でショートカットキー設定しても完全ではありません
◆ 拡張機能でショートカットキー設定しても完全ではありません
Backspace で戻れなくなった
Backspace で戻るが削除されたとβ版で話題でしたが さすがにこんな改悪は反対多数ですぐに元通りになるでしょうと思っていましたですが なんとそのまま安定版がリリースされてしまいました
これまではブラウザの前のページヘ戻る機能を Backspace キーで行えました
キーボードから手を離さないで済むのがショートカットキーの良いところです
マウスのスクロールじゃなくて 上下キーでスクロールする人にとっては当たり前のように使うショートカットだと思います
マウスを使っていても左上の「←」にカーソル合わせるのが面倒なので Backspace ということも多々あります
ノートPC でもタッチパッドから近いので Backspace が基本です
そんな馴染みのショートカットキーを Google が削除してしまいました
Chrome52 で Backspace を押すとこんな画像が表示されます

ALT+ 「←」 を使え ということなようです
しかし そのショートカットキーがあるのはもちろん知っています
ですがよく使う「戻る」だからこそワンクリックでできる Backspace が楽で良かったのです
なぜ「戻る」のために2つもキーを押させるのか理解できません
理由
変更した理由は フォームの入力中に間違って戻る問題がある だそうです一つの問題ではあると思いますが 戻ってしまっても 進むを押せばたいてい復元されているので問題になることはそんなにないと思います
それ以前に そういうことはページを作る側が 「ページを離れてもいいですか?」 というやつ (onbeforeunload) を設定すべきでブラウザ側がどうこうするものじゃないはずです
Backspace の「戻る」は他のブラウザでもある共通操作なのに それを変えるほどの理由とは思えません
対処
対処方法として拡張機能をインストールして自分でショートカットキーを設定する という方法が出回っていますが 完璧にこれまでと同じ挙動にはできませんなので ショートカットキー設定すればいいから別にいいや とは思わないようにすべきです
むしろまぁいいか という考えが多いと Google の勝手を許すことになるので迷惑だと思う人はどんどんネットに書き込むなりして問題をアピールすべきだと思います
できない理由ですが
拡張機能のショートカットキー設定は すべてのページに対してロード時に JavaScript を埋め込みます
埋め込む JavaScript では keydown を監視して 設定したショートカットキーが押されるとそのショートカットキーの動作を実行させるものです
まずひとつ目の問題として 拡張機能のようなページの外側で先にキーをキャプチャしてるわけではなくページの中の JavaScript でページ内の JavaScript と同じように動いて処理しています
ということは ページ内の処理でショートカットキーを妨害してしまうことや 重いページではショートカットキーが反応せず固まったりすることもありえるわけです
次に JavaScript を埋め込む処理ですが これはすべてのページに対してできるわけではありません
埋め込みができない特別なページが存在します
そのせいで 履歴がこのようになっていた場合にめんどうなことになります
埋め込みできる
↓
埋め込みできる
↓
埋め込みできない
↓
埋め込みできる
↓
埋め込みできる ← イマココ
↓
埋め込みできる
↓
埋め込みできない
↓
埋め込みできる
↓
埋め込みできる ← イマココ
Backspace で戻るを繰り返すと 3 番目のところまでは戻れます
ですが 3 番目のページでは埋め込みができないのでショートカットキーを押しても何も起きません
これより前に戻るためには ALT+「←」 や 戻るボタンをクリックして戻り そこからまた Backspace を使うことになります
タブの左右に切り替えと違って埋め込みできない特別なページが間に入ることはそこまで多くありませんが 不便になっていることには違いありません
また この方法以外にもショートカットキーを設定することは可能です
こっちの方法では 拡張機能のレベルでキャプチャしているので上の 2 つの問題は起きません
ですが そのショートカットはこの画面で設定するものです

使ったことがある人はわかると思いますが Backspace 単体をここに登録することはできません
Ctrl+「←」 で戻るようなショートカットキーを作りたいならこれでできますが Backspace には使えないんです
ChromeOS だと IME の入力を監視できるらしいのでまだ手はあるかもしれませんが Windows で使えないと困ります
UserScript でとりあえず対策
ショートカットキーを作る方法では完全にこれまでどおりにできませんが 何もしないよりはマシなので ショートカットキーを自作して対処します適当なフリーの拡張機能でショートカットキーを設定してもいいですが インストールしてなくて自分で書いたスクリプトの実行ができる拡張機能をインストールしているなら UserScript を書いてショートカットキーを自作するのもアリです
例えばこんなやつとか(宣伝)
Backspace を押したときに input にフォーカスが当たってなければ戻るスクリプト
window.addEventListener("keydown", eve => {
eve.keyCode === 8 &&
!["INPUT", "TEXTAREA"].includes(document.activeElement.tagName) &&
history.back()
}, true)
eve.keyCode === 8 &&
!["INPUT", "TEXTAREA"].includes(document.activeElement.tagName) &&
history.back()
}, true)
これを全部のページで読みこむようにすればおっけいです
ただし上で書いたように使えないページは存在します
Google は自分勝手すぎ
最近は Google の自分勝手さがヒドイですよねあれこれ勝手に変えて元に戻す方法用意してないのがほとんど
昔から Youtube や Chrome のトップ画面の UI とか改悪を続けてましたが 最近は特にだと思います
IE を抜いて一番になったからって調子に乗りすぎです
https 関連でも https じゃないとできない機能を増やして https 化進めるとかずるいことしてますし
yahoo のメールの UI 複数から選べるようなところを見習って欲しいです
ほんと どこの俺様なんですかね
その他
ショートカットキーが大きすぎて他の変更点が頭に入ってこないですが気づいたところをいくつかExponentiation Operator
** ですほとんどのプログラミング言語では 2^5 と書いても 2 の 5 乗はしてくれません (XORになります)
Math.pow(2,5) のような関数を書かないといけなかったり 2 ** 5 のように ** という演算子が用意されてる言語もあります
JavaScript では長らく Math.pow でしたが ES7 で正式に ** が使えるようになり Chrome では 51 では隠し機能として実装 52 からはデフォルトで有効になりました
2 ** 5
// 32
var a = 10
a **= 3
// 1000
// 32
var a = 10
a **= 3
// 1000
#RGBA?
Chrome52 から使えると聞いて期待して早速使ってみたら使えませんでしたこれまでと一緒で エラー表示が出て無効になりました
デスクトップ Chrome52 はデフォルトで有効となっていますが sample ページに行っても動いていませんでした
https://www.chromestatus.com/features/5685348285808640
Devtools のカラーピッカーでは #ffff0077 のような形式で出力されるのに その結果がエラーになっている状態です
DevTools
開発者ツールの Resources タブが Application になりましたChrome51

Chrome52

基本的に左側のバーが綺麗になったくらいです
LocalStorage とか Storage がまとめられたりしていますが 選択した時の右側の画面はこれまでどおりです
新しく増えたのが 画像にある Manifest の部分
拡張機能にありそうな情報が並んでいて 各ページにこんな情報あるの?って思います
でも拡張機能に対してここを見てみても空白でした
なにか新しい機能なのかな
変わらず
toStringTag は相変わらずです
console.log(Date.prototype[Symbol.toStringTag])
// undefined
console.log(RegExp.prototype[Symbol.toStringTag])
// undefined
// undefined
console.log(RegExp.prototype[Symbol.toStringTag])
// undefined
toLocaleString のズレも修正無しです
new Date("1900-01-01").toLocaleString()
// "1900/1/1 8:27:52"
// "1900/1/1 8:27:52"
まとめ
勝手な変更が多くてそろそろ別なブラウザがでてきてほしいBrowser.html 期待だけどまだ先なのかなー