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

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

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

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Q&A

解決済

2回答

698閲覧

bxsliderのyoutube停止方法について

taku-

総合スコア5

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

0グッド

0クリップ

投稿2021/11/24 03:03

[現状]
bxsliderを使用して、iframeで埋め込んだyoutubeを下記記述方法で停止していました。
onSlideBefore: function($slideElement, oldIndex, newIndex) {
$('#video_side').find('iframe').each(function() {
var src= $(this).attr('src');
$(this).attr('src',src);
});

しかし、この場合初期化処理が原因で以下不備がでてきたため、動画の停止のみに変更をしたいです。
・印刷ダイアログがキャンセルされる
・IEで画面がフリーズする

[やりたいこと]
ベストな方法としましては、onSlideBeforeの引数にあるoldIndexから一つ前のスライドを取得して、youtubeの停止を行う。です。

[質問事項]
・oldIndexからどのように一つ前のスライドを取得できるか
・iframeタグのyoutubeの停止方法

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

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

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

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

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

Lhankor_Mhy

2021/11/24 03:46

IFrame Player API を使っているのですか?
Lhankor_Mhy

2021/11/24 04:39

IFrame Player API を使わずに動画を停止する方法はあるのですか?
Lhankor_Mhy

2021/11/24 04:58

IFrame Player API を使わずに動画を停止する方法については目星がついていないので、APIを使う、ということでいいですか?
taku-

2021/11/24 05:04

現状では方法がないようでしたら、APIを使って停止できれば構いません。
guest

回答2

0

IFrame Player API を使ってマウントし、YT.Player オブジェクトを配列に保存しておいて、oldIndex を使ってアクセスするのがよさそうに思います。
ただ、この手のスライダーは要素をクローンしてループさせるようにしていますので、そこは気を付けた方がいいかもしれません。

コメントを受けて追記

js

1const playerArray = [ 2 new YT.Player(...), 3 new YT.Player(...), 4 new YT.Player(...), 5 new YT.Player(...), 6 new YT.Player(...), 7]; 8 9//... 10 11onSlideBefore: function($slideElement, oldIndex, newIndex) { 12 playerArray[oldIndex].pauseVideo()

投稿2021/11/24 05:23

編集2021/11/24 06:13
Lhankor_Mhy

総合スコア36117

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

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

taku-

2021/11/24 05:41

ご回答ありがとうございます。 実際のコードを基にご説明いただけると助かります。 ご教授いただいた内容自体、正直やり方が分かりません。
Lhankor_Mhy

2021/11/24 05:52

ご質問で実際のコードをご提示いただけていないので、回答もコードを用いないものになるのはやむを得ない、というのが当方の考え方ですので、ご了解ください。
taku-

2021/11/24 06:37

失礼しました。 iframeの埋め込み自体は、可変数になるので、上記方法は使えないかもしれません。 onSlideBeforeの使い方でご存知でしたら、教えていただきたいのですが、 引数($slideElement, oldIndex, newIndex)だけで、一つ前のスライドのidを取得する方法は分かりますでしょうか?
Lhankor_Mhy

2021/11/24 06:51

わかりませんが、$('#video_side').find('iframe').eq(oldIndex) とかでそれっぽくならないですかね。
taku-

2021/11/24 06:54

ダメでしたね。 いろいろとありがとうございます。 解決には至らなそうなので、停止処理は諦めます。
Lhankor_Mhy

2021/11/24 07:08

こちらでテストしたコードでは onSlideBefore: (x,i)=>console.log(x.prevObject.eq(i)[0].id) で取れました。 前述のコードでは id を拾っているわけではなくて jQueryオブジェクトになっているはずです。念のため。
taku-

2021/11/24 07:39

承知いたしました。
guest

0

自己解決

解決には至らなそうなので、停止処理は諦めます。

投稿2021/11/24 07:39

taku-

総合スコア5

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問