Google Chrome 拡張機能開発における文字列置換の問題について
Q&A
Closed
現在、Google Chromeの拡張機能を練習している者です。開発の過程で困っている点があり、アドバイスをいただければと思い投稿しました。
【問題の概要】
私は現在、Chrome 拡張機能の練習として、ブラウザ上に表示される特定の文字列を変更するプログラムを作成しています。具体的には、content_script.js と manifest.json を使用して、ページ上のテキストを置換するようにしています。しかし、このプログラムを実行すると、テキストは一時的に置換されるものの、すぐに元の表示に戻ってしまいます。
【試したこと】
以下のコードを使用しています。
content_script.js
// content_script.js
function replaceText(node) {
if (node.nodeType === Node.TEXT_NODE) {
node.textContent = node.textContent.replace(/ます/g, "でござるよ");
} else {
node.childNodes.forEach(replaceText);
}
}
replaceText(document.body);
manifest.json
{
"name": "text_replace",
"description": "text_replace",
"version": "1.0",
"manifest_version": 3,
"action": {
"default_popup": "popup.html"//練習用に簡単な文字列のみ表示(popuup.htmlは、今回はあまり関係ないかと思っています)。
},
"content_scripts": [
{
"js": ["content_script.js"],
"matches": ["https://qiita.com/*"]
}
]
}
【確認できていること】
サイトを読み込んですぐは、「でござるよ」で変更されますが、
Chromeデベロッパーモードのコンソールで、content_script.jsの中身を打つと、文字列が変更されたまま表示されます。
【質問内容】
この現象が発生する原因として何が考えられるでしょうか?また、この問題を解決するためのアプローチについて、何かヒントをいただけると幸いです。動的なコンテンツの読み込みや、他のJavaScriptの影響などが原因である可能性を考えていますが、具体的な解決策については見つけられていません。
初歩的な質問かもしれませんが、どんな小さなヒントでも大歓迎です。よろしくお願いします。