回答編集履歴

2

インデント修正

2019/12/26 10:27

投稿

Lhankor_Mhy
Lhankor_Mhy

スコア36928

test CHANGED
@@ -86,7 +86,7 @@
86
86
 
87
87
 
88
88
 
89
- new YT.Player(id, {
89
+ new YT.Player(id, {
90
90
 
91
91
  events: {
92
92
 

1

コメントを受けて追記

2019/12/26 10:27

投稿

Lhankor_Mhy
Lhankor_Mhy

スコア36928

test CHANGED
@@ -53,3 +53,115 @@
53
53
  [Iframe Type | Magnific Popup Documentation](https://dimsemenov.com/plugins/magnific-popup/documentation.html#iframe-type)
54
54
 
55
55
  ご不明の点がありましたら、コメントください。
56
+
57
+
58
+
59
+ ### コメントを受けて追記
60
+
61
+ YouTube限定になってしまいますが……
62
+
63
+ [サンプル](https://jsfiddle.net/Lhankor_Mhy/L76nxdjs/)
64
+
65
+
66
+
67
+ ```html
68
+
69
+ <iframe class="popup-iframe" width="100%" src="https://www.youtube.com/embed/M7lc1UVf-VE" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
70
+
71
+ ```
72
+
73
+
74
+
75
+ ```js
76
+
77
+ function onYouTubeIframeAPIReady() {
78
+
79
+ $('.popup-iframe').each(function(i,e){
80
+
81
+ var id = "_" + i;
82
+
83
+ $(e).attr('id', id);
84
+
85
+ $(e).attr('src', $(e).attr('src') + '?enablejsapi=1');
86
+
87
+
88
+
89
+ new YT.Player(id, {
90
+
91
+ events: {
92
+
93
+ 'onStateChange': onPlayerStateChange
94
+
95
+ }
96
+
97
+ });
98
+
99
+ });
100
+
101
+ }
102
+
103
+
104
+
105
+ function onPlayerStateChange(event) {
106
+
107
+ if (event.data == YT.PlayerState.PLAYING) {
108
+
109
+
110
+
111
+ event.target.stopVideo();
112
+
113
+
114
+
115
+ $.magnificPopup.open({
116
+
117
+ items: {
118
+
119
+ src: event.target.getIframe().src,
120
+
121
+ },
122
+
123
+ type: 'iframe',
124
+
125
+ iframe: {
126
+
127
+ markup: '<div class="mfp-iframe-scaler">'+
128
+
129
+ '<div class="mfp-close"></div>'+
130
+
131
+ '<iframe class="mfp-iframe" frameborder="0" allowfullscreen></iframe>'+
132
+
133
+ '</div>',
134
+
135
+ patterns: {
136
+
137
+ youtube: {
138
+
139
+ index: 'youtube.com/',
140
+
141
+ id: function(url) { return url.split('?')[0].split('/embed/')[1]; },
142
+
143
+ src: '//www.youtube.com/embed/%id%?autoplay=1' // URL that will be set as a source for iframe.
144
+
145
+ },
146
+
147
+ },
148
+
149
+ },
150
+
151
+ }, 0);
152
+
153
+
154
+
155
+ }
156
+
157
+ }
158
+
159
+ ```
160
+
161
+
162
+
163
+ HTMLは質問で提示されたままです。JavaScriptは全部入れ替えました。
164
+
165
+ ただし、[YouTube の iframe Player API](https://developers.google.com/youtube/iframe_api_reference?hl=ja) を導入する必要があるので、以下のスクリプトを読み込んでください。
166
+
167
+ https://www.youtube.com/iframe_api