前提
JavaScriptの初学者です。
ChromiumであるBrave Browserの拡張機能を作ろうとしたのですが、
思い通りの結果にならず困っております。
実現したい処理というのが、
【拡張機能を起動した時にGoogle翻訳のウェブサイト翻訳機能で現在のURLを翻訳する】
というものです。
現状の問題は、新規タブの要素に値を代入できないことです。
3パターンを試してましたが、エラーの意味がわからず行き詰まっています。
私自身の説明につたないところもあると思いますが、アドバイス頂ければと思います。
実現したいこと
- 拡張機能を起動した時の、現在のタブのURLを取得
- 新しいタブでGoogle翻訳ウェブサイト翻訳機能のページを開く
- フォームに取得したURLを入力し、矢印ボタンを押す
- Google翻訳ウェブサイト翻訳機能のページを閉じる
3つ目の 新規タブの要素に値を代入する時に、色々なエラーが起きます。
試したソースコード
JavaScript
1//ソースA 2function ElClick(arg) { 3 console.log(arg); 4 let obj = window.open('https://translate.google.co.jp/?hl=ja&tab=cT&sl=en&tl=ja&op=websites '); 5 let timer = setInterval(function () { 6 if ($("#i44", obj.document) != undefined) { 7 document.getElementById('i44').value = arg; 8 obj.document.getElementsByClassName('VfPpkd-Bz112c-LgbsSe yHy1rc eT1oJ DiOXab zhBWDc Pk9dvb')[0].click(); 9 clearInterval(timer); 10 } 11 }, 500); 12} 13chrome.action.onClicked.addListener((tab) => { 14 const url = tab.url 15 chrome.scripting.executeScript({ 16 target: { tabId: tab.id }, 17 function: ElClick, 18 args: [url] 19 }) 20}) 21 22//ソースB 23function _OnLoad() { 24 console.log(url); 25 document.getElementById('i44').value = url; 26 obj.document.getElementsByClassName('VfPpkd-Bz112c-LgbsSe yHy1rc eT1oJ DiOXab zhBWDc Pk9dvb')[0].click(); 27} 28var readStateCheck = function () { 29 if (obj.document.readyState == "complete") { 30 _OnLoad(); 31 } 32 else { 33 setTimeout(readStateCheck, 100); 34 } 35} 36function _OnClick() { 37 obj = window.open('https://translate.google.co.jp/?hl=ja&tab=cT&sl=en&tl=ja&op=websites '); 38 setTimeout(readStateCheck, 100); 39} 40chrome.action.onClicked.addListener((tab) => { 41 url = tab.url 42 chrome.scripting.executeScript({ 43 target: { tabId: tab.id }, 44 function: _OnClick 45 }) 46}) 47 48//ソースC 49function ElClick(arg) { 50 let obj = window.open('https://translate.google.co.jp/?hl=ja&tab=cT&sl=en&tl=ja&op=websites'); 51 obj.addEventListener('load', function () { 52 console.log(arg); 53 obj.document.getElementById('i44').value = url; 54 obj.document.getElementsByClassName('VfPpkd-Bz112c-LgbsSe yHy1rc eT1oJ DiOXab zhBWDc Pk9dvb')[0].click(); 55 }, false); 56} 57chrome.action.onClicked.addListener((tab) => { 58 const url = tab.url 59 chrome.scripting.executeScript({ 60 target: { tabId: tab.id }, 61 function: ElClick, 62 args: [url] 63 }) 64}) 65
発生している問題・エラーメッセージ
Error
1//ソースA 2Uncaught ReferenceError: $ is not defined 3 4//ソースB 5Uncaught ReferenceError: readStateCheck is not defined 6 7//ソースC 8エラーメッセージはないが、obj.addEventListener();が動かない
補足情報
manifestのバージョンは3で、background.service_workerを使っています。
回答1件
あなたの回答
tips
プレビュー