0

我正在尝试使用video.js和谷歌的 IMA 插件来实现显示视频广告[videojs-ima][1]

示例代码中有以下部分:

// 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';
}

但是当在移动设备上startEvent设置为时,我收到以下错误:tap

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

当我注释掉这些错误时,startEvent = 'tap'我不再收到这些错误,但是video.js播放器的某些功能不起作用,即我无法通过单击视频区域来暂停视频(我需要单击暂停按钮,这很难移动设备)。

我怎样才能让这个“点击”事件在移动设备上正常工作?

4

1 回答 1

0

我已经在 videojs-ima github 上更新了这个问题。也许我的解决方案会被你接受。

主要问题是当您单击“播放”按钮时,由 google-ima videojs 插件创建的 div“ima-ad-container”位于 videojs 播放器上方。

所以我对 iPhone 设备进行了检测:

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';
}

初始化 videojs-ima 插件后,您必须执行此代码,即:

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

我希望它能以某种方式帮助你,它对我有用 :) 在 iPhone 3G、iPhone 3GS、iPhone 4s、iPhone 5 和 iPhone 6 上测试

于 2016-07-04T15:07:48.007 回答