chrome拡張機能において、content scriptから現在のタブのURLを取得したいのですが、できませんでした。
以下に自分がやろうとした方法を載せるので、どこが間違っているのか教えて下さい。または、別のもっと簡単な方法があれば教えて下さい。
JavaScript
1// content_script.js 2function useURLFunc(){ 3 // sendMessageは非同期関数なので、awaitで実行終了を待つ。 4 let sendMsgFunc = () => { 5 return new Promise(resolve => { 6 chrome.runtime.sendMessage({greeting: 'url'}, response => { 7 resolve(response.farewell); 8 }); 9 }); 10 }; 11 // SyntaxError: await is only valid in async function 12 let url = await sendMsgFunc(); 13 14 // 以下、urlを使った処理 15} 16 17useURLFunc();
JavaScript
1// event.js 2chrome.runtime.onMessage.addListener(function(request, sender, sendResponse) { 3 if (request.greeting=='url') { 4 let queryinfo = {'active': true, 'currentWindow': true}; 5 chrome.tabs.query(queryinfo, function(tabs) { 6 sendResponse({farewell: tabs[0].url}); 7 }); 8 return true; 9 } 10});
検索してみただけですが; 次のコードに差し替えた場合 何か変化は見られますか? : https://gist.github.com/javiersantos/c3e9ae2adba72e898f99
現状、event.jsにおけるURLの取得は出来ていて、sendMessage側でもURLを受け取ることは出来ています。問題は、受け取ったURLが変数に入る前にURLを利用する処理に進んでしまうことだと考えています。
このコードについてですが、currentURLはcontent scriptから参照できないので、URLを取得できたか否かに関わらず、状況に変化はないと思います。
現状説明が不足していてすみません。

回答1件
あなたの回答
tips
プレビュー