質問するログイン新規登録

回答編集履歴

1

Textのいてれーと

2021/02/27 15:36

投稿

int32_t
int32_t

スコア21954

answer CHANGED
@@ -28,4 +28,13 @@
28
28
 
29
29
  そもそもループなしで`document.body.innerHTML = document.body.innerHTML.replace(/あ/g, "い")`だけで目的を達成できるのではないでしょうか。
30
30
 
31
- あと、拡張機能特有の話になりますが、対象ページ内のノードを勝手に再構築するとページ本来の挙動が壊れる可能性がものすごく高くなります。できるだけノードの作り直しはしないで、`Text`ノードの`data`プロパティを更新したほうが安全です。
31
+ あと、拡張機能特有の話になりますが、対象ページ内のノードを勝手に再構築するとページ本来の挙動が壊れる可能性がものすごく高くなります。できるだけノードの作り直しはしないで、`Text`ノードの`data`プロパティを更新したほうが安全です。
32
+
33
+ 追記: document.body 以下の `Text` ノードの `data` プロパティを置換するには以下のようにします。
34
+ ```javascript
35
+ const walker = document.createTreeWalker(document.body, NodeFilter.SHOW_TEXT);
36
+ let text;
37
+ while ((text = walker.nextNode())) {
38
+ text.data = text.data.replace(/あ/g, "い");
39
+ }
40
+ ```