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

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

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

SafariはAppleのウェブブラウザであり、Mac OS XとiOSのデフォルトのブラウザです。

YouTube API

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

JavaScript

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

jQuery

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

Q&A

解決済

1回答

2622閲覧

OSXのsafariのみif文が正常に動作しない

kjhy

総合スコア7

Safari

SafariはAppleのウェブブラウザであり、Mac OS XとiOSのデフォルトのブラウザです。

YouTube API

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

JavaScript

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

jQuery

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

0グッド

0クリップ

投稿2016/03/27 03:07

編集2016/03/27 03:13

###実現したいこと
YouTubeAPIで動画を埋め込み、ブラウザのwindow幅で動画を切り分けたい

###発生している問題
OSXのsafariのみ常に動画ID2が表示されてしまう(Chrome等では動作確認済み)

###ソースコード

var tag = document.createElement('script'); tag.src = "https://www.youtube.com/iframe_api"; var firstScriptTag = document.getElementsByTagName('script')[0]; firstScriptTag.parentNode.insertBefore(tag, firstScriptTag); var windowWidth = window.innerWidth ? window.innerWidth: $(window).width() var breakWidth = 768; if(windowWidth > breakWidth) { function onYouTubeIframeAPIReady() { player = new YT.Player('player', { height: '450', width: '800', videoId: '動画ID1', wmode: 'transparent', events: { 'onReady': onPlayerReady, 'onStateChange': onPlayerStateChange }, playerVars: { "rel":0, "showinfo":0 } }); } } else { function onYouTubeIframeAPIReady() { player = new YT.Player('player', { height: '315', width: '560', videoId: '動画ID2', wmode: 'transparent', events: { 'onReady': onPlayerReady, 'onStateChange': onPlayerStateChange }, playerVars: { "rel":0, "showinfo":0 } }); } }

色々と調べてみたのですが原因がわからず。。
ご教授いただけますと幸いです。よろしくお願い致します。

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

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

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

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

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

guest

回答1

0

ベストアンサー

if文の中で関数宣言をしてるからですね
ブラウザごとに挙動が違うようですので、その方法はやめておいたほうが良いと思います

var onYouTubeIframeAPIReady = function() {

と無名関数を代入する形にしてはどうでしょうか

https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Functions_and_function_scope#Conditionally_defining_a_function

投稿2016/03/27 03:32

ryls-nmm

総合スコア633

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

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

kjhy

2016/03/27 03:45

ご回答ありがとうございます。無事正常に動作するようになりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問