はじめに
Googleが提供しているChrome Remote Desktopは,ポートさえ開いていれば,Googleアカウントを使用してどこからでも自宅のPCを操作できる魅力がある。かく言う私もヘビーユーザーである(本当のことを言えば443ポートでも遠隔操作できるTeamViewerのほうがもっと好き)。
しかし最近,Chrome Remote Desktopを使ってPowerPoint等のファイルを編集していると,下図のように画面全体の画像がドラッグされてしまい,上手くPowerPointの図形を縮小出来ないことがあった。
これについて少し調べたので,本記事にメモしておく。
試したこと
とりあえず,発生の条件を考えてみた。
- 遠隔操作される端末でドラッグ操作をしようとするときに発生する
- 使い始めて5分で発生することもあれば,2時間使っても発生しないこともある
- 全画面モードでもウィンドウモードでも発生する
さらに追加で調べてみた
- 再読み込み等により,再接続すると一旦,発生しなくなる(高確率で再発する)
- アドブロック系の拡張機能をオフにしても発生する
- コンソール上にエラー等は特に表示されていない
- Google Chromeでは発生せず,Firefoxでは発生する
Google Chromeでは発生しないのに,Firefoxでは発生するというのが,引っかかる。この辺の記事やこの辺の記事を読んでいると,Chromeのオレオレ機能によってFirefoxが除け者にされているのでは?と疑ってしまう。
確かにGoogle Chromeは(特に同期機能が)非常に便利で,私自身よく使用しているが,やはり個人的にはFirefoxを応援したい気持ちになる(Chrome Remote DesktopなのにFirefoxで操作しているの?という突っ込みはさておき)。
解決方法
結局,原因はよく分からなかった。しかし,画面全体の画像がドラッグされている時には,遠隔操作する側のメイン画面にあるcanvas
タグでドラッグイベントが発生していることに気が付いた。そこで,イベントをキャッチしてpreventDefaultを呼んであげれば,ドラッグされなくなるのではないかと考えた。
Array.from(document.getElementsByTagName("canvas")).forEach(e=>{e.addEventListener("dragstart",f=>{f.preventDefault();});});
おわりに
狙い通り,前述のコードを実行すると時たま,ドラッグイベントは発生するものの,画面全体の画像がマウスに付いてくる,ということは無くなった。そのため,想定通りChrome Remote Desktopを使い続けられそうである。任意のサイトでJavaScriptを自動実行させる系の拡張機能に追加しておきたいと思う。
ところで,原因は何だったのだろうか。。。
以上