JavaScript で文書ツリーを辿るコード例 再帰呼び出しは、短く書け読みやすいのですが、関数を多段で呼び出すコストが発生します。パフォーマンスの求められるところでは不適当です。本記事では再帰呼び出しをせずに、一度の関数呼び出しと do~while ループでノードツリーを辿る例を紹介します。 次の例では、与えらえたノード自身を引数に onReachNode 関数をコールバックします…
「JavaScriptのレガシー挙動を定めたAnnex Bをひたすら読む記事」へのリンクを追記。(2024/05/09) 「 Object.setPrototypeOf(O, proto) full/complete polyfill」へのリンクと「stackoverflow / IE8 getPrototypeOf method」の引用を追記。 dojo ではスーパークラスを辿れる仕組みを用…
$.css.hooks から $.css.patches にプロパティ名を変更。推敲と追記。(2024/04/16) クロスブラウザを切り口に、アプリケーションが使用しないコードをコンパイル時に除去する方法を示します。 やや手間が増えますが、使用しないコードは確実に除去されるので、クロスブラウザ対策をモリモリに盛り込んで、ソースコードをブラウザの(黒)歴史博物館にしちゃいましょう。 フ…
Cycle.js が同じ発想の記法を採用していました。この記事に新規性はゼロですね…(2023/09/30) 宣言的 UI を JavaScript だけで、人間に読みやすく表現するアイデアです。Vue の作者による 6KB の petite-vue を眺めていたら頭に浮かびました。実装はありません、悪しからず! はじめに これまでも JavaScript の関数呼び出しで UI …
「 アイコンの為に Web フォント、合字を深堀してフォールバックを検討する 」での調査を元に「 <font> タグの id 属性は残す」の id が必要なブラウザに iOS Safari 3~4 を追記。(2024/01/26) 「エンティティ」表記を「数値文字参照」に修正しました。追記と修正をしています。(2023/08/16) icomoon で作成した SVG フ…
Chrome には <link> を再利用する場合に、2回目以降のイベントが発生しない問題がありました 。(2024/09/19) Wii の Opera 9.30でテストして Opera の B グレードを 9~9.27 → 9~9.30 に修正しました。(2024/02/12) 現在の実装 に沿って動作の記述を変更しています。(2023/07/28) Gecko が A グレー…
はじめに このブログなどで使用するアイコンを Pure CSS アイコン からベクターアイコンへ置き換えを進めています。新しいベクターアイコンでは、Web フォントと、フォールバックとして JavaScript で SVG を挿入する二段構えとしました。 Web フォントが適用されているか? の検出に関する記事は「 Webフォントがブラウザで有効か?きっちり調べる 」を参照ください。 フォ…
関数定義 → 関数宣言(2024/04/04) 執筆時点で未解決だった、 Gecko 0.8.0以下での括弧の下の関数の問題 は es2-postprocessor 0.12.0で解決 しています。(2023/01/04 追記) この記事は、 JavaScript Advent Calendar 2022 の3日目です。2日目の記事は martinheidegger さんによる「 JavaSc…
「os0x.blog / 外部JavaScriptの動的ロード」へのリンクを追記。(2024/04/05) 「os0x.blog / Opera9.2から9.5でのJavaScript周りの変更点」へのリンクを追記。(2024/04/04) iframe からライブラリのコード文字列を親フレームに渡して、親フレームで eval 等でライブラリを有効化すれば、下で言及している「 iframe …
「これまでに確認したレガシーな DHTML ブラウザの ES3 サポートと実装のバグ」の各表のタイトルを修正。調査ミスを修正。(2022/11/24) 「これまでに確認したレガシーな DHTML ブラウザの ES3 サポートと実装のバグ」の調査ミスを修正し、調査項目を追加しました。(2022/11/20) IE5 の「ES3 で追加された構文」の誤りを修正しました。(2022/11/04) …
Google Code Prettify についての誤りを訂正しました。次のようなマークアップもサポートしています。 <pre class="prettyprint"><code class="language-js">var a = 0;</code></pre> (2022/11/05) language…
「 スペック 」の表を分割して読みやすくしました。(2022/12/13) タブフォーカスのパッチを修正 して Opera 7.xでも動作するようになったため、本機能の下限ブラウザも変わりました。 tabNavigation.js で Gecko 0.9.4以下のタブフォーカスの未実装を補った為、本機能の下限ブラウザも変わりました。(2022/12/03) ScrollEvent について追…