質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
Chrome

Google Chromeは携帯、テレビ、デスクトップなどの様々なプラットフォームで利用できるウェブブラウザです。Googleが開発したもので、Blink (レンダリングエンジン) とアプリケーションフレームワークを使用しています。

JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

非同期処理

非同期処理とは一部のコードを別々のスレッドで実行させる手法です。アプリケーションのパフォーマンスを向上させる目的でこの手法を用います。

Chrome extension

Chrome拡張機能

受付中

chrome拡張機能でページを跨いで処理する方法について

sss0930
sss0930

総合スコア0

Chrome

Google Chromeは携帯、テレビ、デスクトップなどの様々なプラットフォームで利用できるウェブブラウザです。Googleが開発したもので、Blink (レンダリングエンジン) とアプリケーションフレームワークを使用しています。

JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

非同期処理

非同期処理とは一部のコードを別々のスレッドで実行させる手法です。アプリケーションのパフォーマンスを向上させる目的でこの手法を用います。

Chrome extension

Chrome拡張機能

0回答

0評価

0クリップ

5閲覧

投稿2020/01/21 10:34

編集2022/01/12 10:55

前提・実現したいこと

chrome拡張機能で、
popup.html内のボタン(document.getElementById("btn1"))をクリックすると
window.promptがあらわれて検索用の数値を入力させて検索結果のURLを生成し、
document.location.hrefで生成したURLに遷移。
更に遷移後のページ内にある特定のボタンを取得してクリック。
といった動きを実現したいのですが、
document.location.hrefで生成したページに遷移までは動作したものの、
ページを跨いた後から動きません。

chrome拡張機能のデベロッパーツールではエラーが出ていないのですが、
何が原因でしょうか。数日間ググっては検証して悩みましたが煮詰まってしまった為、
誤りのある個所をご指摘、もしくはヒントを頂けますと大変幸いです。
何卒よろしくお願いいたします。

試したこと

chrome.tabs.onUpdatedとsetIntervalで
アクティブなタブのURLが特定のものに変わるのを待ってみたり、
promiseで実行の順序を指定してみましたが実現できませんでした。

該当のソースコード

※質問用にYahoo!のサイトに書き換えたコードを記載します

script.js

js

function KeywordGet() { var Keyword = window.prompt("Keyword(半角の数値)を入力してください", ""); if ( Keyword === null ) { window.alert('キャンセルしました'); } else if (!isNaN(Keyword)){ var Keyword_url = "https://search.yahoo.co.jp/search?p="+Keyword; document.location.href = Keyword_url; }else { window.alert("数値以外が入力されています"); } } function ButtonClick() { document.querySelector("#isrch").click(); } document.addEventListener("DOMContentLoaded", function(){ var btn1 = document.getElementById("btn1"); btn1.addEventListener("click",KeywordGet,false); function KeywordGet(){ chrome.tabs.query({active: true, currentWindow: true}, function(tabs) { chrome.tabs.sendMessage(tabs[0].id, {"message": "KeywordGet"}); ButtonClick(); }); } function ButtonClick(){ chrome.tabs.onUpdated.addListener(function(tabId, changeInfo, tab) { var count = 0; const MaxCount = 10; const set_interval_id = setInterval(ButtonClickDo, 1000); function ButtonClickDo(){ count++; if(count > MaxCount) { clearInterval(set_interval_id); } if (changeInfo.status == "complete" && tab.url.indexOf("https://search.yahoo.co.jp/search?") !== -1) { clearInterval(set_interval_id); chrome.tabs.sendMessage(tabs[0].id, {"message": "KeywordAccess"}); } } }); } }, false); chrome.extension.onMessage.addListener(function(request, sender, sendResponse) { if (request.message === "KeywordGet") { KeywordGet(); } else if (request.message === "KeywordAccess") { ButtonClick(); } });

manifest.json

json

{ "manifest_version":2, "author": "***", "name": "***", "description": "***"", "version": "***"", "icons": "***", "content_scripts": [{ "matches": ["https://www.yahoo.co.jp/*","https://search.yahoo.co.jp/*"], "js": ["script.js","jquery.min.js"], "run_at": "document_end", "all_frames": true }], "browser_action": { "default_icon": "***", "default_title": "***", "default_popup": "popup.html" }, "permissions": [ "activeTab", "tabs", "http://*/*", "https://*/*" ] }

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

Chrome

Google Chromeは携帯、テレビ、デスクトップなどの様々なプラットフォームで利用できるウェブブラウザです。Googleが開発したもので、Blink (レンダリングエンジン) とアプリケーションフレームワークを使用しています。

JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

非同期処理

非同期処理とは一部のコードを別々のスレッドで実行させる手法です。アプリケーションのパフォーマンスを向上させる目的でこの手法を用います。

Chrome extension

Chrome拡張機能