「あさま」のまさか(その6)

2024年6月12日朝、本サイトを開いてみたらローディングアニメーションのネズミが走り続けるまんま。

「ええええー?昨日までなんでもなかったよ?」脳みそが青ざめました。

ブラウザの開発コンソールを開いてみるとJavascriptでエラーが発生している。

それも実害はないにもかかわらず、直したばっかのところでした。

たしかにミス(すんません。バグでし。)はあったけど、テストでは問題なかったのにどうして?

(bodyタグに記述してないタイプのメソッドは扱いが少々異なる可能性もありそうです。あ、これ独り言。)

それもそうだけど、いままで間違っていても実害なかったのにー!どうして今更引っ掛かるの?

(独り言への追記:2024.6.13)

自前のJavascriptには、ページのonload時に発生する他のメソッド(function)を損なうことなく、自前の初期化メソッドを実装するようになっています。(随分と以前にどっかから引っ張ってきて便利に使っていたつもりでした。)

bodyタグにonload=’myFunction();’とか指定する分には問題なく動作していたのですが、自前と同じように、

window.onload = function() {myFunction();}

と実装してしまうとエラーになってしまうのでした。いままで気がつきませんでした。

今回はどっちでも大丈夫な記述にしました。「()」を取っただけなんですけどね。

以上、自らの備忘録でした。

どうやら昨晩以降、ブラウザさんたちがページのファイルを読み終えたonload時にメソッド(function)を参照するようになりました。

何度か試験するうちに「Wordpressシステムかもしれない。」と推測するに至りました。

どうやら、つい最近の新しいバージョン6.5.4からの様子です。そして、なんで今朝から…?

なにかほとんど空っぽのメソッド(訂正:なんかやってるようです。)を仕込んでくれます。オーバーライドしちゃってもいいのかもしれませんが、将来的に何かするのかもしれません。やだなー。

となると、私の古いJavascriptでエラーが発生する可能性があります。(たまらん。)

(追記:2024.6.13)

一夜明けて、再確認したところonload時のメソッド(function)が消えました。

個人管理のサイトで罠をかけ、コンソール出力で動作を確認できるようにしていたのですが、「functionあります。」メッセージがなくなりました。

なんだったんだろう?Wordpress記念日とか?だめなJavascriptをふるいにかけるためとか?

プラグインが悪さしていたかもしれません。しばらく様子を見ます。

(追記:2024.6.14)

その後もonload時のメソッド(function)はでません。

考えてみれば、私のJavascriptは自身を読み込んだ最終行で、他にonload時のメソッドがないかを確認してます。それ以降は感知してません。

一昨日は、もともと私のJavascript以降に設定されるnload時のメソッドが出現していたのかもしれません。(でも、どうして引っ込めたんだろうか?)

そうであったとしても、そこら辺はテーマとそのユーザーに解放しておいて欲しいと感じてしまいます。(何をしてたのだろうか?)

試しに軽く罠を掛けてみましたが、私のJavascriptのnload時メソッドは現れませんでした。はて?

即刻、対応してあさま開発サイトダウンロードページに「あさまテーマ(親子丼セット)ver. 0.3.31(ZIP)」を公開しました。

WordPressを6.5.4にする前にご利用ください。(確証はありませんが…。)

事実上の変更は、asamaとasamitoの各フォルダ内のjsフォルダにある「hustleConfig.js」だけです。

上書きしてください。

記述箇所では195行目からの「hustleの初期化実装メソッド」の内容になります。さらに整理しましたので、ここを入れ替えてください。

//----------------------------------------------------------------
// hustleの初期化実装メソッド
//Syntax:objectName.addLoadEvent(init);
//Parameter:"init"は初期化メソッド
//Return:なし
//Reference:ページのonloadイベントを損なうことなく、hustleオブジェクトの初期化メソッドを実装するためのメソッド
hustle.addLoadEvent = function(init) {
	if(typeof(window.onload) !== 'function') window.onload = init;
	else {
		const fn = window.onload;
		window.onload = function() {
			fn;
			hustle.init();
		};
	}
};

お手間取らせます。とりあえずは、これで大丈夫だと思います。そかさ。