CSSStyleSheet: replace() メソッド

Baseline 2023
Newly available

Since March 2023, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.

replace()CSSStyleSheet インターフェイスのメソッドで、スタイルシートの内容を渡された内容で非同期に置き換えます。このメソッドは CSSStyleSheet オブジェクトで解決されるプロミスを返します。

replace()CSSStyleSheet.replaceSync() の両メソッドは、 CSSStyleSheet() コンストラクターで作成されたスタイルシートでのみ使用できます。

構文

js
replace(text)

引数

text

スタイルシートのコンテンツを置き換えるためのスタイルルールを格納した文字列。文字列に解釈可能なルールのリストが入っていない場合、値は空文字列に設定されます。

メモ: もし text に渡されたルールの中に @import ルールでインポートされた外部スタイルシートがあった場合は、それらのルールは除去され、コンソールに警告が出力されます。

返値

Promise で、 CSSStyleSheet に解決します。

例外

NotAllowedError DOMException

次の 2 つの条件のうち一方が成立した場合に発生します。

  • このスタイルシートが CSSStyleSheet() コンストラクターを使用して作成されていない。
  • このスタイルシートが変更不可に設定されている。

次の例では、新しいスタイルシートを作成し、replace() を使って 2 つの CSS ルールを追加しています。最初のルールはコンソールに body { font-size: 1.4em; } と表示されます。

js
const stylesheet = new CSSStyleSheet();

stylesheet
  .replace("body { font-size: 1.4em; } p { color: red; }")
  .then(() => {
    console.log(stylesheet.cssRules[0].cssText);
  })
  .catch((err) => {
    console.error("Failed to replace styles:", err);
  });

仕様書

Specification
CSS Object Model (CSSOM)
# dom-cssstylesheet-replace

ブラウザーの互換性

Report problems with this compatibility data on GitHub
desktopmobile
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
replace

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support

関連情報