javascript - 带有 youtube iframe 的 Angular ng-swipe

标签 javascript angularjs youtube angularjs-ng-touch

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

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

有一个片段:

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

app.controller('ctrl', function($scope) {
  $scope.msg = function(msg) {
    alert(msg);
  }
});
.ok {
  width: 300px;
  height: 100px;
  background: green;
}
<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>

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

最佳答案

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

注意 1:如果你在这里玩它有点 bug,所以我添加了一个代码笔: 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);
  }
});
.ok {
  width: 300px;
  height: 100px;
  background: green;
}
<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>

关于javascript - 带有 youtube iframe 的 Angular ng-swipe,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34751855/

相关文章:

javascript - Number.isNaN 在 IE 中不存在

javascript - href javascript函数调用自动解码问题

javascript - 刷新后在 ngView 中为 IE 工作设置媒体查询样式

javascript - 如何在 ng-repeat 中切换多个初始项目

php - 如何列出YouTube channel 发布的所有视频?

javascript - 计算html页面上所有<a>的数量

php - jQuery:单选按钮选择决定要显示哪个 div,具有“checked”属性

javascript - 如何向每个 AngularJS $scope 添加一致的变量或函数?

javascript - IE8不会运行特定的JS函数,但会运行具有类似代码的另一个函数

android - 应用程序因违反开发者分发协议(protocol)第 4.4 条而被 Playstore 拒绝