2016-05-11 10 views
0

Ich versuche, Video-Anzeigen zu implementieren Anzeigen mit video.js und Googles IMA-Plugin [videojs-ima][1]Video.js + IMA google auf mobilen Geräten: 'tap' Ereignis verursacht Fehler

Im example code wird folgende Teil:

// Initialize the ad container when the video player is clicked, but only the 
// first time it's clicked. 
var startEvent = 'click'; 
if (navigator.userAgent.match(/iPhone/i) || 
    navigator.userAgent.match(/iPad/i) || 
    navigator.userAgent.match(/Android/i)) { 
    startEvent = 'tap'; 
} 

aber wenn die startEvent-tap auf mobilen Geräten gesetzt ich folgende Fehler:

Uncaught TypeError: document.createTouch is not a function(anonymous function) @ ima3.js:252Ha @ ima3.js:9zm @ ima3.js:252h.Ld @ ima3.js:253Ze @ ima3.js:68h.dispatchEvent @ ima3.js:66im.w @ ima3.js:243We @ ima3.js:63Se @ ima3.js:64(anonymous function) @ ima3.js:62 
ima3.js:252 
Uncaught TypeError: Cannot read property 'apply' of undefined 

Wenn ich die Zeile mit startEvent = 'tap' auskommentiere, bekomme ich diese Fehler nicht mehr, aber einige Funktionen von video.js Player funktionieren nicht, dh ich kann das Video nicht anhalten, indem ich auf den Videobereich klicke (Ich muss auf Pause klicken, und das ist schwer auf mobilen Geräten).

Wie kann ich diese "Tipp" -Ereignisse auf mobilen Geräten richtig funktionieren lassen?

Antwort

0

Ich habe das Problem auf dem videojs-ima GitHub aktualisiert. Vielleicht wird meine Lösung für Sie akzeptabel sein.

Das Hauptproblem ist, wenn Sie auf den "Play" -Button klicken, der div "ima-ad-container" von google-ima videojs plugin ist über dem videojs player.

Also habe ich eine Erkennung für iPhone-Geräte:

jQuery

if (navigator.userAgent.match(/iPhone/i)){ 
    $('#ima-ad-container').hide().css({'left':'-10000px','top':'-10000px'}); 
} 

Javascript

if (navigator.userAgent.match(/iPhone/i)){ 
    var imaDom = document.getElementById('#ima-ad-container'); 
    imaDom.style.display='none'; 
    imaDom.style.left='-10000px'; 
    imaDom.style.top='-10000px'; 
} 

Sie diesen Code auszuführen haben, sobald das VideoJS-ima Plugin initialisiert ist, dh:

videojs('player').on('adsready', { 
    }); 

Ich hoffe, es kann Ihnen irgendwie helfen, es hat für mich funktioniert :) Getestet auf iPhone 3G, iPhone 3GS, iPhone 4s, iPhone 5 & iPhone 6

Verwandte Themen