急に外部呼出しのjsファイル内の関数が読み込めなくなっていた。
ファイルの読み込み順をconsol.logでも確認するが読み込みのタイミングは順番通りで、なぜ参照できなくなったのかがわからなくなってしまった。
同一HTMLファイル内に関数を記述すると問題なく読み込まれるのになぜ?
外部jsファイルの実行も問題なく、JQueryの読み込み順番も一見問題ない。
プログラムの仕組みが良く理解できていないけど、やはり関数が読み込まれるようにするとかグローバル化しないといけないとの結論に達するが方法がわからない。
ちなみにhtaccessなどの制限も疑ってみるが、ローカルでもサーバー上でもファイル読み込みはされているので除外する。
JavaScriptなのですべてをローカル環境にして再度トライする。
外部jsファイルに記述したfunctionなども実行するがうまくいかなかったため、別の関数を新規に作成してテストするも同じく
uncaught referenceerror function is not defined
キャッシュなどは何度もクリアしながら、console.logも書き換えながら、最新ファイルを参照しているはずなのに。
どうやっても理由がわからなので初心に戻り、外部ファイルをすべて綺麗にして、グローバルスコープで別の関数を設置すると、うまくconsole.logが表示。
以前の関数をコピペすると動作できる。
・・・どうも記述部になんらかの欠陥があった模様。コメントアウトや記述などの編集も頻度があったので、なんとなく府に落ちないながらもトラブル回避。
cssセレクタなどでもごくまれに起こる、リドルクラッシュ(riddle crash)と全く似た現象かと。
ちなみにcssセレクタのリドルクラッシュは、正しい記述なのに値を変更したりすることで急に正常に反映されなくなり、同じセレクタ最初から記述しなおすと治る現象のこと。
ところが、再表示を試みたところ、やはり表示できない。他のブラウザでは表示できるから、ブラウザ特有のものであるかと考えるが、どうも狭い視野でしか思考が動かないので、その日は放置。
後日、やはり同じ現象が発生しているため、別種のブラウザで見てみるとどうやら表示されているので、ブラウザ限定の要因に絞り込みする。
再度テスト用のファイルを別途作成してトライするも、やっぱり同じエラーに悩まされる。
『あ!アドオンだ!』
GhosteryかAdblock Plus。怪しいのはどちらかだ。
結局、Adblock Plusが外部JSの読み込み制限をかけていたため、許可をするとすんなり表示。
冷静な思考を失うと、時間も労力も失う。