Google Chrome=拡張機能を作成します。その仕事は、すべてのWebサイトでWordを別のWordに置き換えることです。
次のmanifest.jsonファイルがあります。
{
"name": "My extension",
"version": "1.0",
"background_page": "background.html",
"permissions": [
"tabs", "http://*/*"
],
"content_scripts": [
{
"matches": ["http://*/*"],
"js": ["myscript.js"],
"run_at": "document_end"
}
]
}
myscript.jsのJavaScriptは次のとおりです。
< script type="text/javascript" >
document.body.innerHTML = document.body.innerHTML.replace("uno", "dos");
< /script >
ただし、これは機能しません。コンテンツスクリプトをデバッグする方法が見つかりません。background.htmlのみです。
JavaNut13とMatt Curtisの例を使用してRedditのエイリアスハイダー拡張機能を作成し、新しいマニフェスト2に合わせて更新しました。「user1」という名前のRedditでユーザーを探し、「nobody」に置き換えます。必要に応じて変更します。
manifest.json
{
"name": "No Alias",
"version": "0.1",
"permissions": [
"https://www.reddit.com/*"
],
"content_scripts": [
{
"matches": ["https://www.reddit.com/*"],
"js": ["myscript.js"],
"run_at": "document_end"
}
],
"manifest_version": 2
}
myscript.js
document.body.innerHTML = document.body.innerHTML.replace(new RegExp("user1", "g"), "nobody");
私は実際にこれをjQueryで書いています:(正しいインクルードタグがあることを確認してください)
var replaced = $("body").html().replace(/text/g,'replace');
$("body").html(replaced);
このスケールでのDOM内のテキストの置換/変更は、非常に危険なHTMLの正規表現の置換では行わないでください。その過程でHTMLを破壊するリスクがあります。
ドキュメント内のすべてのTextNode( Node
)をループし、テキスト内のテキストを変更する必要があります。
コードは次のようになります。
var replaceTextInNode = function(parentNode){
for(var i = parentNode.childNodes.length-1; i >= 0; i--){
var node = parentNode.childNodes[i];
// Make sure this is a text node
if(node.nodeType == Element.TEXT_NODE){
node.textContent = /* modify text here */
} else if(node.nodeType == Element.ELEMENT_NODE){
// Check this node's child nodes for text nodes to act on
replaceTextInNode(node);
}
}
};
replaceTextInNode(document.body);
DOMを使用して、適切なdata
ノードのText
を変更します。例えば。
document.body.querySelector(".number").firstChild.data = "dos";