外国語のサイトをgoogle翻訳した結果を、jsを使ってコピーしたいです。
例として次のサイトのName「templatequote」の要素を取得します。
https://en.wikipedia.org/wiki/JavaScript
google翻訳で次のurlを得ます。
https://translate.google.com/translate?sl=en&tl=ja&u=https://en.wikipedia.org/wiki/JavaScript
次のサイトを参考にして、chromeのconsoleから要素をコピーするjsを実行します。
https://shanabrian.com/web/javascript/copy-element-to-clipboard.php
javascript
1tmp=document.getElementsByClassName("templatequote") 2copyElementToClipboard(tmp[0])
その結果、未翻訳の文書が得られます。これは、google翻訳がまだ表示していない要素を翻訳していないからだと考えました。
実際に、手でページ一番下まで(正確には該当要素が見えるまで)スクロールしてから取得をかければ、日本語で結果を得ることができます。
このスクロール作業を自動化するために、
次のサイトを参考にして、一番上から下までスクロールさせてからコピーしようとしました。
https://www.tagindex.com/javascript/window/scroll.html
javascript
1scrollTo(0,0); 2scroll() 3tmp=document.getElementsByClassName("templatequote") 4copyElementToClipboard(tmp[0])
この結果、js4つをまとめて入力すると未翻訳の結果が取得され、
上2行、下2行に分けて入力すると翻訳済みの結果が取得されるという
意図しない結果になりました。
原因としては、scroll()が非同期処理になっており、
scroll()の完了前 (=翻訳の完了前)にその後の処理が走ってしまっているせいだとわかりました。
scroll()の完了までその後の処理を待つためにはどのようにすればよいのでしょうか。
最終的にはブックマークレットにしたいと考えていて
まずは1回のconsole入力だけで実現できる段階に達したいです。
あと少しだと思うのですが、皆様の知恵を拝借したくお願い致します。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/10/29 02:07
2021/10/29 04:16