使用youtube iframe进行Angular ng-swipe

akn*_*akn 10 javascript youtube angularjs angularjs-ng-touch

我正在尝试用图像和youtube视频构建简单的滑块.我想让它在触摸设备上工作正常,所以我想使用ng-swipe-*angular的ngTouch模块.不幸的是,滑动无法在youtube的iframe上运行.我试着设置较低z-index: -10;,但后来我无法播放视频.

你知道如何解决这个问题吗?

有一个片段:

var app = angular.module('app', ['ngTouch']);

app.controller('ctrl', function($scope) {
  $scope.msg = function(msg) {
    alert(msg);
  }
});
Run Code Online (Sandbox Code Playgroud)
.ok {
  width: 300px;
  height: 100px;
  background: green;
}
Run Code Online (Sandbox Code Playgroud)
<script src="https://code.angularjs.org/1.4.8/angular.min.js"></script>
<script src="https://code.angularjs.org/1.4.8/angular-touch.min.js"></script>
<div ng-app="app">
  <div ng-controller="ctrl" ng-swipe-right="msg('right')" ng-swipe-left="msg('left')">
    <div class="ok">swipe works here</div>
    <div>
      <iframe width="300" height="200" src="https://www.youtube.com/embed/dQw4w9WgXcQ" frameborder="0" allowfullscreen></iframe>
    </div>
  </div>
</div>
Run Code Online (Sandbox Code Playgroud)

(测试它的最佳方法是在Chrome开发者控制台中运行它并在触摸设备上模拟)

Fau*_* NA 2

这是一个非常hacky的解决方法:使用两个覆盖div,设置在播放器的右侧和左侧,允许用户播放和暂停,并将高度设置为80%,允许他们使用底部的菜单。这并不完美,但它确实有效!

注1:如果你在这里玩的话会有点问题,所以我添加了一个codepen: http: //codepen.io/anon/pen/LGjwYZ

第二个版本,有点臃肿,但覆盖范围更大:http://codepen.io/anon/pen/rxzXxB

注 2:出于演示目的,我在 div 上使用了透明背景。

var app = angular.module('app', ['ngTouch']);

app.controller('ctrl', function($scope) {
  $scope.msg = function(msg) {
    alert(msg);
  }
});
Run Code Online (Sandbox Code Playgroud)
.ok {
  width: 300px;
  height: 100px;
  background: green;
}
Run Code Online (Sandbox Code Playgroud)
<script src="https://code.angularjs.org/1.4.8/angular.min.js"></script>
<script src="https://code.angularjs.org/1.4.8/angular-touch.min.js"></script>
<div ng-app="app">
  <div ng-controller="ctrl" ng-swipe-right="msg('right')" ng-swipe-left="msg('left')">
    <div class="ok">swipe works here</div>
    <div style="position:relative; height:200px; width:300px;">
        <iframe style="position:absolute;width:100%;height:100%;z-index:10;" src="https://www.youtube.com/embed/dQw4w9WgXcQ"></iframe>
        <div style="background:rgba(0,0,0,0.3);height:80%;width:40%;left:0;position:absolute;z-index:20;"></div>
      <div style="background:rgba(0,0,0,0.3);height:80%;width:40%;right:0;position:absolute;z-index:20;"></div>
</div>
  </div>
</div>
Run Code Online (Sandbox Code Playgroud)