@@ -38,7 +38,7 @@ module.exports = registerElement('a-assets', {
3838 // Wait for <img>s.
3939 imgEls = this . querySelectorAll ( 'img' ) ;
4040 for ( i = 0 ; i < imgEls . length ; i ++ ) {
41- imgEl = setCrossOrigin ( imgEls [ i ] ) ;
41+ imgEl = fixUpMediaElement ( imgEls [ i ] ) ;
4242 loaded . push ( new Promise ( function ( resolve , reject ) {
4343 imgEl . onload = resolve ;
4444 imgEl . onerror = reject ;
@@ -48,7 +48,7 @@ module.exports = registerElement('a-assets', {
4848 // Wait for <audio>s and <video>s.
4949 mediaEls = this . querySelectorAll ( 'audio, video' ) ;
5050 for ( i = 0 ; i < mediaEls . length ; i ++ ) {
51- mediaEl = setCrossOrigin ( mediaEls [ i ] ) ;
51+ mediaEl = fixUpMediaElement ( mediaEls [ i ] ) ;
5252 loaded . push ( mediaElementLoaded ( mediaEl ) ) ;
5353 }
5454
@@ -159,6 +159,27 @@ function mediaElementLoaded (el) {
159159 } ) ;
160160}
161161
162+ /**
163+ * Automatically add attributes to media elements where convenient.
164+ * crossorigin, playsinline.
165+ */
166+ function fixUpMediaElement ( mediaEl ) {
167+ // Cross-origin.
168+ var newMediaEl = setCrossOrigin ( mediaEl ) ;
169+
170+ // Plays inline for mobile.
171+ if ( newMediaEl . tagName === 'VIDEO' ) {
172+ newMediaEl . setAttribute ( 'playsinline' , '' ) ;
173+ newMediaEl . setAttribute ( 'webkit-playsinline' , '' ) ;
174+ }
175+
176+ if ( newMediaEl !== mediaEl ) {
177+ mediaEl . parentNode . appendChild ( newMediaEl ) ;
178+ mediaEl . parentNode . removeChild ( mediaEl ) ;
179+ }
180+ return newMediaEl ;
181+ }
182+
162183/**
163184 * Automatically set `crossorigin` if not defined on the media element.
164185 * If it is not defined, we must create and re-append a new media element <img> and
@@ -188,8 +209,6 @@ function setCrossOrigin (mediaEl) {
188209 'A-Frame will re-request the asset with `crossorigin` attribute set.' , src ) ;
189210 mediaEl . crossOrigin = 'anonymous' ;
190211 newMediaEl = mediaEl . cloneNode ( true ) ;
191- mediaEl . parentNode . appendChild ( newMediaEl ) ;
192- mediaEl . parentNode . removeChild ( mediaEl ) ;
193212 return newMediaEl ;
194213}
195214
0 commit comments