javascript - Phoenix YouTube 视频编程错误 - 视频无法播放

标签 javascript youtube elixir youtube-javascript-api phoenix-framework

我正在阅读《Programming Phoenix》一书,但在使用 YouTube 视频播放器时遇到错误。

这是我的 web/static/js/player.js 文件:

let Player = {
  player: null,

  init(domId, playerId, onReady){
    window.onYouTubeIframeAPIReady = () => {
      this.onIframeReady(domId, playerId, onReady)
    }
    let youtubeScriptTag = document.createElement("script")
    youtubeScriptTag.src = "//www.youtube.com/iframe_api"
    document.head.appendChild(youtubeScriptTag)
  },

  onIframeReady(domId, playerId, onReady){
    this.player = new YT.Player(domId, {
      height: "360",
      width: "420",
      videoId: playerId,
      events: {
        "onReady": (event => onReady(event) ),
        "onStateChange": (event => this.onPlayerStateChange(event) )
      }
    })
  },

  onPlayerStateChange(event){ },
  getCurrentTime(){ return Math.floor(this.player.getCurrentTime() * 1000) },
    seekTo(millsec){ return this.player.seekTo(millsec / 1000) }
}
export default Player

我在 web/static/js/app.js 中像这样导入它:

import Player from "./player"
let video = document.getElementById("video")

if(video) {
  Player.init(video.id, video.getAttribute("data-player-id"), () => {
    console.log("player ready!")
  })
}

我看到“玩家准备好了!” JavaScript 控制台中的消息;但是,视频无法播放。他们给我一个如下所示的错误:

enter image description here

如何解决此问题以便视频能够播放?

最佳答案

这个错误实际上是来 self 的 watch View - 我忘记了 <id> 之前正则表达式中的问号所以player_id没有被正确设置:

defmodule Rumbl.WatchView do
  use Rumbl.Web, :view

  def player_id(video) do
    ~r{^.*(?:youtu\.be/|\w+/|v=)(?<id>[^#&?]*)}
    |> Regex.named_captures(video.url)
    |> get_in(["id"])
  end
end

关于javascript - Phoenix YouTube 视频编程错误 - 视频无法播放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35805470/

相关文章:

Javascript:将自定义对象方法绑定(bind)到事件监听器

html - 如何从youtube html页面提取视频时长?

elixir - 在生产中运行混合任务

elixir - 设置生产端口号时出现问题 - (RuntimeError) 期望设置 PORT 环境变量

elixir - 为什么 Elixir 中的 Rem 运算符返回负数?

php - 我网站的主题选择器和主题预览

javascript - 如何在没有工具栏,菜单栏的情况下在新窗口中打开网址

javascript - 将对象数组和嵌套数组转换为 JSON

android - VideoView无法播放视频错误

api - youtube api 的 get 方法面临 401 问题