◆ Backspace で前のページに戻れなくなった
◆ 拡張機能でショートカットキー設定しても完全ではありません 

Backspace で戻れなくなった

Backspace で戻るが削除されたとβ版で話題でしたが さすがにこんな改悪は反対多数ですぐに元通りになるでしょうと思っていました
ですが なんとそのまま安定版がリリースされてしまいました

これまではブラウザの前のページヘ戻る機能を Backspace キーで行えました
キーボードから手を離さないで済むのがショートカットキーの良いところです
マウスのスクロールじゃなくて 上下キーでスクロールする人にとっては当たり前のように使うショートカットだと思います

マウスを使っていても左上の「←」にカーソル合わせるのが面倒なので Backspace ということも多々あります
ノートPC でもタッチパッドから近いので Backspace が基本です


そんな馴染みのショートカットキーを Google が削除してしまいました

Chrome52 で Backspace を押すとこんな画像が表示されます

ch52back

ALT+ 「←」 を使え ということなようです

しかし そのショートカットキーがあるのはもちろん知っています
ですがよく使う「戻る」だからこそワンクリックでできる Backspace が楽で良かったのです

なぜ「戻る」のために2つもキーを押させるのか理解できません

理由

変更した理由は フォームの入力中に間違って戻る問題がある だそうです

一つの問題ではあると思いますが 戻ってしまっても 進むを押せばたいてい復元されているので問題になることはそんなにないと思います

それ以前に そういうことはページを作る側が 「ページを離れてもいいですか?」 というやつ (onbeforeunload) を設定すべきでブラウザ側がどうこうするものじゃないはずです

Backspace の「戻る」は他のブラウザでもある共通操作なのに それを変えるほどの理由とは思えません

対処

対処方法として拡張機能をインストールして自分でショートカットキーを設定する という方法が出回っていますが 完璧にこれまでと同じ挙動にはできません
なので ショートカットキー設定すればいいから別にいいや とは思わないようにすべきです

むしろまぁいいか という考えが多いと Google の勝手を許すことになるので迷惑だと思う人はどんどんネットに書き込むなりして問題をアピールすべきだと思います


できない理由ですが

拡張機能のショートカットキー設定は すべてのページに対してロード時に JavaScript を埋め込みます
埋め込む JavaScript では keydown を監視して 設定したショートカットキーが押されるとそのショートカットキーの動作を実行させるものです

まずひとつ目の問題として 拡張機能のようなページの外側で先にキーをキャプチャしてるわけではなくページの中の JavaScript でページ内の JavaScript と同じように動いて処理しています
ということは ページ内の処理でショートカットキーを妨害してしまうことや 重いページではショートカットキーが反応せず固まったりすることもありえるわけです

次に JavaScript を埋め込む処理ですが これはすべてのページに対してできるわけではありません
埋め込みができない特別なページが存在します

そのせいで 履歴がこのようになっていた場合にめんどうなことになります
埋め込みできる

埋め込みできる

埋め込みできない

埋め込みできる

埋め込みできる ← イマココ

Backspace で戻るを繰り返すと 3 番目のところまでは戻れます
ですが 3 番目のページでは埋め込みができないのでショートカットキーを押しても何も起きません
これより前に戻るためには ALT+「←」 や 戻るボタンをクリックして戻り そこからまた Backspace を使うことになります

タブの左右に切り替えと違って埋め込みできない特別なページが間に入ることはそこまで多くありませんが 不便になっていることには違いありません


また この方法以外にもショートカットキーを設定することは可能です
こっちの方法では 拡張機能のレベルでキャプチャしているので上の 2 つの問題は起きません

ですが そのショートカットはこの画面で設定するものです

chsc

使ったことがある人はわかると思いますが 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)

これを全部のページで読みこむようにすればおっけいです
ただし上で書いたように使えないページは存在します

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

#RGBA?

Chrome52 から使えると聞いて期待して早速使ってみたら使えませんでした

これまでと一緒で エラー表示が出て無効になりました
デスクトップ Chrome52 はデフォルトで有効となっていますが sample ページに行っても動いていませんでした
https://www.chromestatus.com/features/5685348285808640

Devtools のカラーピッカーでは #ffff0077 のような形式で出力されるのに その結果がエラーになっている状態です

DevTools

開発者ツールの Resources タブが Application になりました

Chrome51
ch51resources


Chrome52
ch52resources

基本的に左側のバーが綺麗になったくらいです
LocalStorage とか Storage がまとめられたりしていますが 選択した時の右側の画面はこれまでどおりです

新しく増えたのが 画像にある Manifest の部分
拡張機能にありそうな情報が並んでいて 各ページにこんな情報あるの?って思います

でも拡張機能に対してここを見てみても空白でした
なにか新しい機能なのかな

変わらず


toStringTag は相変わらずです
console.log(Date.prototype[Symbol.toStringTag])
// undefined

console.log(RegExp.prototype[Symbol.toStringTag])
// undefined

toLocaleString のズレも修正無しです
new Date("1900-01-01").toLocaleString()
// "1900/1/1 8:27:52"

まとめ

勝手な変更が多くてそろそろ別なブラウザがでてきてほしい

Browser.html 期待だけどまだ先なのかなー