Firefox 153 がリリースされた。Local Network Access 制限の既定有効化、popover=hint、モジュールの text import attributes、Error.stackTraceLimit が含まれる。拡張機能はローカルファイルへ既定でアクセスできなくなり、別権限で利用者が許可する。HTTP Compression Dictionaries も段階展開される。

#Local Network Access

ローカルネットワーク上の機器や、端末上のアプリ/サービスへ接続する前に、サイトは許可を求める。以前は無効だった制限が、全ユーザー向けに既定で有効になった。

js
// 許可が無いと失敗しうる例(プライベート/ローカル向けホスト)
const res = await fetch("http://192.168.1.1/");

#popover=hint

Popover API に popover="hint" が入った。ツールチップのように auto ポップオーバーを閉じずに重ねて出せる。未対応ブラウザでは popover="manual" 相当にフォールバックする。

html
<button popovertarget="menu">メニュー</button>
<div id="menu" popover="auto">操作一覧</div>

<button id="help">ヘルプ</button>
<div id="tip" class="tooltip" popover="hint">短い説明</div>
<script>
  const help = document.getElementById("help");
  const tip = document.getElementById("tip");
  help.addEventListener("pointerenter", () => tip.showPopover());
  help.addEventListener("pointerleave", () => tip.hidePopover());
</script>

#text import attributes

モジュールシステムでテキストファイルを文字列として import できる。応答の Content-Type は無視され、内容は常にテキストとして扱う。

js
import readme from "./readme.txt" with { type: "text" };
console.log(readme.slice(0, 80));

#Error.stackTraceLimit

Error.stackTraceLimit で、キャプチャする JavaScript のエラースタック深さの上限を読み書きできる。既定より小さくするとスタック取得の負荷を抑えられる。

js
Error.stackTraceLimit = 10;
try {
  throw new Error("demo");
} catch (e) {
  console.log(String(e.stack).split("\n").length);
}

#参考文献