これはjavadriptのコードで、questionへの回答から来ており、ウェブページ上のテキストの置換に非常に適しています。 SafariとChromeの両方でjavascriptコンソールを使用すると、効果的な結果が得られました。ウェブページのテキストをjavascriptとapplescriptに置き換える方法
function replaceTextOnPage(from, to){
getAllTextNodes().forEach(function(node){
node.nodeValue = node.nodeValue.replace(new RegExp(quote(from), 'g'), to);
});
function getAllTextNodes(){
var result = [];
(function scanSubTree(node){
if(node.childNodes.length)
for(var i = 0; i < node.childNodes.length; i++)
scanSubTree(node.childNodes[i]);
else if(node.nodeType == Node.TEXT_NODE)
result.push(node);
})(document);
return result;
}
function quote(str){
return (str+'').replace(/([.?*+^$[\]\\(){}|-])/g, "\\$1");
}
}
replaceTextOnPage('oldtext', 'newtext');
しかし、私はSafariとクロームの両方で、replace_text.jsとしてこれを保存し、AppleScriptをして、それを実行しようとすると、それは私も実行してみました
tell application "Safari"
activate
tell the current tab of window 1 to do JavaScript "/Users/Me/ScriptFolder/replace_text.js"
end tell
欠損値返しますreplace_text.jsファイルを使用する代わりに引用符をエスケープしてエスケープした後にスクリプトエディタのtellブロックから直接javascriptを読み込みますが、これもmissiになります値はです。
スクリプトエディタに直接JavaScriptコードをコピーして貼り付けて、JavaScriptランナーを使用して実行すると、エラー-2700:スクリプトエラーが発生します。
Error on line 15: ReferenceError: Can't find variable: document
私はdocument = "http://example.com"
としてスクリプト内で文書を定義した場合、私はエラーを取得する:
Error on line 12: TypeError: undefined is not an object (evaluating 'node.childNodes.length')
誰かが私が間違って何をやっている私に言うことはできますか? Applescriptでこの同じJavaScriptコードを実行するにはどうすればよいですか?
おかげ