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

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

詳細はこちら
Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

YouTube

YouTubeとはユーザーがビデオをアップロード・共有・閲覧できるビデオ共有ウェブサイトです。

YouTube API

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

JavaScript

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

Q&A

解決済

1回答

1413閲覧

YoutubeのiFrameAPIでimport 文を使いたい

kumin_43

総合スコア10

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

YouTube

YouTubeとはユーザーがビデオをアップロード・共有・閲覧できるビデオ共有ウェブサイトです。

YouTube API

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

JavaScript

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

0グッド

2クリップ

投稿2019/09/18 15:51

前提・実現したいこと

YoutubeのiFrameAPIを使ってサイトを作っています。

import文を使って、videoIdは別ファイルに読み込ませてwebpackでまとめたいのですが

import文を書くと以下の関数が

function onYouTubeIframeAPIReady() {

が動かなくなります。

該当のソースコード

javascript

1//iframe.js 2 3import ytData from './data'; 4 5var tag = document.createElement('script'); 6tag.src = "https://www.youtube.com/iframe_api"; 7var firstScriptTag = document.getElementsByTagName('script')[0]; 8firstScriptTag.parentNode.insertBefore(tag, firstScriptTag); 9 // 各プレーヤーの格納 10var ytPlayer = []; 11// 各動画情報 12 13// 各プレーヤーの埋め込み 14function onYouTubeIframeAPIReady() { 15 for(var i = 0; i < ytData.length; i++) { 16 ytPlayer[i] = new YT.Player(ytData[i]['area'], { 17 videoId: ytData[i]['id'], 18 playerVars: { 19 rel: 0 20 }, 21 events: { 22 'onReady': onPlayerReady 23 } 24 }); 25 } 26} 27 28function onPlayerReady(e) { 29 for (var i = 0; i < ytData.length; i++) { 30 if(e.target.getIframe().id == ytData[i]['area']) { 31 console.log(ytData[i]['area'] + 'のプレーヤー準備完了しました。'); 32 } 33 }; 34}

javascript

1 2// data.js 3 4var ytData = [ 5 { 6 id: 'hoge', 7 area: 'player' 8 }, { 9 id: 'hoge', 10 area: 'player01' 11 } 12]; 13 14export {ytData}; 15

試したこと

ここに問題に対して試したことを記載してください。

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

ここにより詳細な情報を記載してください。

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

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

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

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

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

unhappychoice

2019/09/18 21:45

動かなくなります。 とはどういった状況でしょうか、 - webpack したあとの成果物は生成されていますか? - webpack のコンソールまたはブラウザで動かしている場合は devtool になにかエラーは出ていますか?
kumin_43

2019/09/19 01:00 編集

ありがとうございます。 わかりづらくて申し訳ありません。 「動かなくなります」というのは iframe.jsにimport文を書いた時点で function onYouTubeIframeAPIReady() が機能しなくなる、ということです。 *VS CODEを使用しているのですが、import文を書くとonYouTubeIframeAPIReady()の文字が薄くなり  ます。 webpackはまだ使っていませんので、一旦無視していただいて大丈夫です。
guest

回答1

0

自己解決

以下の関数をグローバル関数にすることで解決しました

node.js

1 2window.onYouTubeIframeAPIReady = function() { 3 // 省略 4} 5

投稿2019/09/22 12:25

kumin_43

総合スコア10

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問