スキップしてメイン コンテンツに移動

ChromeでAlt押しながらリンクをホバーすると小さなウィンドウが現れて、邪魔

ChromeでAltキー押しながらリンクをホバーすると小さなウィンドウが立ち上がってしまう。これが邪魔なので無効化したいという話。

ちなみにAltを押しておくとアンカーテキストを直接選択できてコピペに便利なのだが(個別記事)、このポップアップウィンドウが見事に邪魔してくる。最悪。


概要

最初に断っておくと、これはおそらく一般的なトラブルではない。

"chrome alt mouseover disable" などで検索してもそれらしい報告がヒットしなかったのと、同じブラウザでも新規プロファイルでは発生しないなどの特徴が見られたためだ。


実際に症状が発生している様をキャプチャしたのが以下のアニメーション。撮影中は一度もリンクをクリックしていない。



発生時のChromeバージョンは127.0.6533.26(Official Build)beta (64 ビット)、OSはWin11 Home。

最新のChrome Canaryでは症状発生しなかったので、将来的に導入予定のブラウザ新機能というわけではなさそう。

症状の特徴

  • Altを押しながらリンク上にカーソルを乗せると、リンク先のコンテンツがブラウザ右下に小さなウィンドウで開く(以下「発動」と呼ぶ)
  • ホバーしてから発動までのタイムラグはおそらく1秒きっかり
  • 単なるホバーでは発動せず、必ずAltキー押下が必要
    • ShiftやCtrlでは発動しないが、Altが含まれていれば発動する
    • 例えば、Shift+Ctrl+Alt+ホバーであれば発動する
    • 先にカーソルを載せたあとでAltキーを押しても同様に発動する
  • ホバー対象はリンク…… というよりはaタグであればなんでも良い感じがする
    • テキストリンク、画像リンク、どちらでも発動する
    • <a href="#top"> みたいなやつでも発動する
  • シークレットモードでも発動するので、拡張機能要因の症状ではない
  • Googleの検索結果ページやYahoo!トップなどサイトによらず発動する
  • 発生中のページでJS使ってmouseoverイベントを無効化してみても効果がない
    • document.addEventListener('mouseover', function(e) { e.preventDefault(); }}); みたいな
    • DevTools上で実行
  • 子ウィンドウの領域内どこかをクリックすると、ページ内容が即時に新規タブで開かれる
    • 参考キャプチャ:下のgif
    • この際一切の読み込みのタイムラグがない



発動して開いた子ウィンドウもちょっと変

  • 必ず元のブラウザの右下1/4くらいの領域にポップアップする
  • アドレスバーがない
  • 最大化・最小化のボタンもない
  • ウィンドウタイトルは空白文字列である
  • Alt+F4やCtrl+Wで閉じられない
  • F12押してもDevToolsが開かない
  • Alt+リンクホバーしてもなにも起こらない
  • サイズの拡大縮小ができない
  • タイトルをドラッグして移動することはできる
    • 移動してみると影の付き方が若干おかしいことがわかる(下スクショ)
    • 移動先の座標は元のブラウザの範囲外にもできる



症状の再現性について

  • 一度発動するようになったブラウザでは毎回必ず発動する
  • Chrome再起動やPC再起動では解消しない
  • 同一PC内の同じchrome.exeであっても、新規作成したプロファイルでは症状が再現しない
  • 症状発生中プロファイル (A) と新規プロファイル (B) とで、同じGoogleアカウントにログインしてプロファイル間同期を取っても、新規プロファイル側で症状は再現しない
  • AからBへ実体ファイルをコピーして直接差分を解消する実験
    • LocalStateというファイルをAからBにコピーすることで、Bでも症状を再現させることに成功
    • LocalState以外のファイルはどれだけコピーしようとも、Bでの症状再現に繋がらなかった


結論

この問題の発生原因は不明である。Chrome本体のアップデート時等にプロファイルが一部変な感じになることは時たまあるので、今回もそれの一種であろうか。

今回ChromeがBeta版であったことと直接の関係はなく、あくまでプロファイルが妙な状態になったことでおかしな挙動をするようになっただけと考えている。


症状の対策は簡単で、対象のプロファイルディレクトリ内にある「Local State」ファイル(拡張子なし、中身はJSON)を削除してChromeを再起動すればよい。この方法には問題があった。詳細は追記を参照。

具体的な場所は chrome://version/ に書いてある「プロフィール パス」の1階層上だ。


あるいは新規プロファイルに切り替えて旧プロファイルの内容を同期してくることでも、問題を解消できる。この方法は他にも潜在的な問題の芽が隠れていたとき、それを潰せる可能性がある。


なおこの対策をとることで、ログイン中であった全てのサイトからログアウトされる。Cookieも全て消えているかもしれない。

新規プロファイルに乗り換えた場合は、上に加えて拡張機能ごとの設定もすべてクリアされる。


※2024-06-30追記

Local Stateの削除には思わぬ副作用があった。それはブラウザのパスワードとGoogleパスワードマネージャーの同期ができなくなるというもので、結構致命的である。

これは困るので新規プロファイルに同期をとってクリーンする方法を改めて採ることとなった。



コメント