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

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

新規登録して質問してみよう
ただいま回答率
85.48%
YouTube API

YouTube APIはYouTubeのビデオコンテンツと機能性をウェブサイト、アプリケーション、デバイスに統合することを可能にします。

JavaScript

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

Q&A

解決済

2回答

1693閲覧

youtube apiでeventの処理を分岐させたい

MeB

総合スコア104

YouTube API

YouTube APIはYouTubeのビデオコンテンツと機能性をウェブサイト、アプリケーション、デバイスに統合することを可能にします。

JavaScript

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

0グッド

1クリップ

投稿2019/02/08 03:22

onPlayerReady時にplayer01限定の処理があるのですが、
player02のときも実行されてしまうため、
分岐させたいのですが、何を条件に
onPlayerReady(event)内で分岐させたらいいのかわからず質問させていただきました。
お手数おかけしますがご挙示のほど宜しくお願いします。

js

1function onYouTubeIframeAPIReady() { 2 3 var player01 = new YT.Player('player01', { 4 playerVersion=HTML5&hl=ja 5 height: videoH, 6 width: videoW, 7 videoId: '', 8 rel: '1', 9 modestbranding: '1', 10 showinfo: '0', 11 fs: '0', 12 controls: '1', 13 autohide: '1', 14 events: { 15 'onReady': onPlayerReady, 16 'onStateChange': onPlayerStateChange 17 } 18 }); 19 20 var player02 = new YT.Player('player02', { 21 22 height: videoH, 23 width: videoW, 24 videoId: '', 25 rel: '1', 26 modestbranding: '1', 27 showinfo: '0', 28 fs: '0', 29 controls: '1', 30 autohide: '1', 31 events: { 32 'onReady': onPlayerReady 33 } 34 }); 35} 36 37function onPlayerReady(event) { 38 gaPlayers.push(event.target); 39 gaMovieState[iframeID] = false; 40 event.target.setVolume(0); 41 42 var block = document.getElementById('player01'); 43 var blockW = block.clientWidth; 44 block.style.height = parseInt(videoRto * blockW) + "px"; 45}

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

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

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

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

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

kei344

2019/02/08 15:21

まだ質問が「受付中」になっていますが、「ベストアンサー」を選び「解決済」にされてはいかがでしょうか。
guest

回答2

0

ベストアンサー

event.target.aにiframeエレメントが入っていました。
iframeエレメントからIDを取得すればよさそうです。

if(event.target.a.id == 'player01') { // 処理 }

補足:
eventオブジェクトの仕様を探したのですが見当たりあませんでしたので実行結果から確認してます

追記:
オブジェクトの中身を確認する際は、console.dir()が有効です。

console.dir(event); console.dir(event.target);

外部のAPI等を使う際は仕様書を確認するのが一番良いと思いますが、
併せて上記のようにデバッグすると理解が早いと思います。

投稿2019/02/08 05:14

編集2019/02/08 07:20
mri0815

総合スコア429

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

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

m.ts10806

2019/02/08 06:16

> eventオブジェクトの仕様を探したのですが見当たりあませんでしたので実行結果から確認してます そのあたりのデバッグのやり方もあったほうが丁寧かもしれませんね。デバッグすればわかったことでもありますし・・・
mri0815

2019/02/08 07:21

mts10806 さん> ありがとうございます。たしかにそうですね・・・! 追記しました。
guest

0

event.target.idplayer01のときに処理をしてみては。

投稿2019/02/08 03:28

kei344

総合スコア69407

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

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

MeB

2019/02/08 03:57

回答ありがとうございます。 if(event.target.id == player01) { var block = document.getElementById('player01'); ... こちらを試してみたのですが処理がされませんでした。 すみません。
mri0815

2019/02/08 04:36

横から失礼します、event.target.aにiframeエレメントが入っているようです、 if(event.target.a.id == 'player01') なら行けそうです。(eventオブジェクトの仕様を探したんですが見当たりあませんでしたので実行結果から確認してます)
MeB

2019/02/08 04:42

ありがとうございます。うまくできました。 >event.target.aにiframeエレメントが入っている このようなこので色々変わるのですね…。eventの使用ちゃんと読んでおきます。 ありがとうございました。
MeB

2019/02/08 04:44

こう言う場合はkei344さんの回答にベストアンサーでいいのでしょうか…?
mri0815

2019/02/08 05:12

何を条件に分岐するか、という点についてはkei344さんの回答のとおりかな、と思ったのでコメントにさせていただいたのですが、後から同じ課題の方が見たときにわかりにくそうですね、すみません。改めて回答として投稿します。
kei344

2019/02/08 05:29

To: MeBさん mri0815さんの回答にベストアンサーでお願いします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問