🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Chrome

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

JavaScript

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

Q&A

解決済

1回答

956閲覧

【初心者】JavaScriptでChrome拡張機能を作ったが想定通りの処理ができない

VVD

総合スコア6

Chrome

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

JavaScript

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

0グッド

0クリップ

投稿2019/09/21 13:31

前提・実現したいこと

表題の通りとなりますが、
HTMLで書かれた外部サイトのbuttonオブジェクトを操作するプログラムを開発しています。

自己流で学んでいるためエラーの原因と解決策がわかりません。

考えている仕組みは以下の通りです。
1)「あるbuttonオブジェクトをクリックする」ということをキーボードのキーに付与したいです
2)Chromeの拡張機能で実装しようと考えています

発生している問題・エラーメッセージ

Chromeの拡張機能側に以下のエラーが出力されています

Uncaught TypeError: document.getElementsByClassName(...).click is not a function

該当のソースコード

【HTML側のソースコード】

HTML

1<button class="btn-standard call-to-action">Search</button> 2

【JavaScript側ソースコード】
※shortcut.add()は下記サイトで紹介されているメソッドを使っています
https://www.saka-en.com/javascript/short-cut-key-js/

JavaScript

1//検索ボタン押下する 2shortcut.add("Shift+1",function() { 3 document.getElementsByClassName("btn-standard call-to-action hover").click(); 4 },{ 5 'type':'keydown', 6 'disable_in_input':false, 7 'target':document, 8 'propagate':false, 9 //'keycode':** 10 });

補足情報(FW/ツールのバージョンなど)

Chromeのバージョンは下記です。
バージョン: 77.0.3865.90(Official Build) (64 ビット)

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kei344

2019/09/23 15:03

まだ質問が「受付中」になっていますが、いったん「解決済」にされてはいかがでしょうか。
guest

回答1

0

ベストアンサー

getElementsByClassName の使い方が間違っています。複数の要素を取得する前提のメソッドなので、[0]をつけるなどして一つの要素にするかforで走査するかどちらかしましょう。

【Document.getElementsByClassName() - Web API | MDN】
https://developer.mozilla.org/ja/docs/Web/API/Document/getElementsByClassName

投稿2019/09/21 13:40

kei344

総合スコア69596

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

VVD

2019/09/22 16:24

ご回答ありがとうございます。 たしかにgetElementsByClassName の使い方が間違えていました。 ご指摘どおり[0]を付けたら該当のエラーは解消しました。 ただし、次の行で別のエラーが出てしまいました。 それの原因を見つけるための時間が確保できていないので、なる早で原因を究明していこうと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問