Microsoft Edge Ver.83以後のバグ

Edge Ver.83/84(以後単にEdge)でも昔からあるバグはまだ直っていないようである。

下記の赤線部分のリンクはいずれもJavaScript(以後単にJS)を使ったものである。
左側(ccp_0001)はJSのprg関数、右側(fgetc)はJSのeskn関数を使ったものである。外部ファイルとして作成した*.jsの中にあるものである。


WEBではprg関数の方は実行されるが、eskn関数の方は実行されない。
リンクマーク(手)は表示されるが、クリックしても反応がない。

WEBでのEdgeにはeskn関数が認識されていないということである。同じファイル内にあるprg関数は実行されているのに・・・。eskn関数に間違いがあるのか、何度も見直したがどこにも間違いはない。
ちなみに、IE Ver.11(以後単にIE)では、WEBでもローカルでも想定した正常な動作をする。

思えば、このeskn関数は後から追加したものだった。最初に作った時の*.jsには存在していなかった。
また、今このeskn関数をkse関数にリネイムして(アップロードして)実行しても、やはり実行されるのはprg関数だけでkse関数は実行されなかった。


原因

これはEdgeが出てきた当時からあるバグに近い問題点である。いやバグだと言う方が適当である。

Edgeではキャッシュより新しいファイルがあっても、自動的にはそれを読み込まないというバグがある。結果的に、古いファイルが使われてしまい、更新が反映されないことになる。これはEdge Ver.83でも同様である。不細工な欠陥ブラウザで使い物にはならない。

これが通常の*.htmlファイルならば、新しく書き換えても、やはり昔のままの内容で、変更が反映されない。この場合は、左上にある「更新」ボタン(Ctrl+R)を押せば何とか新しいファイルを読み込むようである。しかし、単なる閲覧者が、今ここに表示されているものが古いファイルだということに気がつくことはほとんどない。したがって、「更新」ボタンが押されることもない。結局、古いファイルのまま表示されることになる。

さらに、そのファイルが*.jsなどのJavaScriptファイルの場合、キャッシュにそれと同名のファイルがある場合、左上にある「更新」ボタン(Ctrl+R)を押しても、常に古いキャッシュされた*.jsファイルの内容が使われる。これは「更新」でもなければ「ファイルの再読み込み」にもなっていない。それで、外部読み込みのJavaScriptファイル(*.js)の内容を書き換えてもその変更が反映されないことになる。

ちなみに、IE では常に新しいファイルが読み込まれるから、新規にJavaScriptの内容を書き換えても、常にその変更が即座に反映される。それに比べるとEdgeには致命的な欠陥があるといえる。


キャッシュデータの削除

Edgeの右上にある「…」ボタンを押す。
  1. 「設定(S)」
  2. 左側の上のほうにある「プライバシーとサービス」または「プライバシー、検索、サービス」
  3. 中ほどにある「閲覧データをクリア」の項
  4. 「クリアするデータの選択」をクリックする
と次のような画面が出る。

時間の範囲を「すべての期間」にして、「今すぐクリア」ボタンを押す。


「時間の範囲」は「すべての期間」にするのがいい。最近のものをクリアしたところで、ほとんど意味はない。大昔の、すでに忘れ去っているようなファイルが「悪さ」をしている可能性が高いからである。

ここで「すべての期間」のものをクリアしておけば最新のファイルは必ず読み込まれるからである。


ちなみに「閲覧データをクリア」の全項目は次の通りである。

閲覧の履歴
ダウンロードの履歴
Cookie およびその他のサイトデータ
キャッシュされた画像とファイル
パスワード
オートフィル フォーム データ(フォームやカードを含む)
サイトのアクセス許可
ホストされたアプリのデータ
以前のバージョンの Microsoft Edge のすべてのデータ

デフォルトでチェックされているものだけを削除すればいいだろう。
YouTubeの閲覧データはCookieを利用しているようである。それをクリアしない場合は「Cookie」のチェックをはずす。
「パスワード」などは残しておいた方が便利かもしれない。

問題点
さて、問題はそこからである。
作成側が*.jsなどの内容を修正・変更したことを知っている場合は、上のように、それが反映されないことで動作がおかしいことに気がつく。

重要
*.htmlの内容を変更しても、明示的に「更新」ボタンを押さない一般人には、その変更は見えない。
*.jsを修正しても、明示的にキャッシュを削除することがない一般人には、修正した動作はしない。

そういう修正や変更があったことは外部からは通常はわからない。単なる閲覧者にそれを気づかせる方法はない。それが問題である。IEのように新しいファイルならそちらを読み込むというのに比べると退化も退化、もう使い物にならないほどである。

- 2020/06/28 -


参考
Microsoft Edge Ver.83/小さな進歩(tpc_0475)



たとえば、今までにトップページにきたことがあれば、同名のファイルはすべてキャッシュから読み込まれていることがわかる。
ここでは次の2ファイルしか読み込まれていない。

123.456.78.90 - - [18/Jul/2020:20:53:06 +0900] "GET /index.html HTTP/1.1" 200 7104 "-"
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36 Edg/84.0.522.40"
この間のデータファイルはすべてキャッシュが使われている。画像や*.jsを変更しても同名ならば読み込まれないことになる。
123.456.78.90 - - [18/Jul/2020:20:53:06 +0900] "GET /img/top/pic7.jpg HTTP/1.1" 200 12781 "https://www.mermaid-tavern.com/index.html"
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36 Edg/84.0.522.40"
これはランダム画像だからキャッシュにはないデータである。
したがって、変更が反映されないのも当然だったわけである。それが*.cssの場合は単に表示面でのことにすぎないが、*.jsの場合は動作面にかかわるだけに致命的な欠陥になる。
- 2020/07/18 -

この欠陥はスマホのブラウザ、たとえばauブラウザやGoogle Chromeでも同じである。特に、*.cssや*.jsを変更した場合がそれがすぐに反映されることはない。常にキャッシュを削除して、新ファイルとして再読み込みすることが必要になる。不細工なバグソフトばかりである。