vue-youtube-embed无法读取属性' src' null

时间:2017-08-04 18:07:36

标签: javascript youtube-api vue.js

我使用vue-youtube-embed库在Vue.js组件内显示Youtube播放器。

首次加载组件时,播放器效果很好,但之后无法播放视频。我认为这是组件稍后被销毁并再次安装的时候。

在我的网站中,我使用router-view。当导航到播放器组件时第一次它工作得很好,但如果我回到主页然后再转发到播放器组件,我会收到此错误:

Cannot read property 'src' of null

完整堆栈跟踪:

www-widgetapi.js:121 Uncaught TypeError: Cannot read property 'src' of
null at W.g.C
(https://s.ytimg.com/yts/jsbin/www-widgetapi-vflQKB5wA/www-widgetapi.js:121:84)
at V
(https://s.ytimg.com/yts/jsbin/www-widgetapi-vflQKB5wA/www-widgetapi.js:113:99)
at W.(anonymous function).getCurrentTime.Mb.(anonymous function) [as
loadVideoById]
(https://s.ytimg.com/yts/jsbin/www-widgetapi-vflQKB5wA/www-widgetapi.js:130:11)
at VueComponent.play (eval at (http://localhost:8080/app.js:1037:1),
:136:31) at VueComponent.boundFn [as play] (eval at
(http://localhost:8080/app.js:729:1), :165:14) at Vue$3.eval (eval at
(http://localhost:8080/app.js:1037:1), :73:18) at Vue$3.Vue.$emit
(eval at (http://localhost:8080/app.js:729:1), :2207:16) at
VueComponent.playSong (eval at (http://localhost:8080/app.js:1058:1),
:123:73) at boundFn (eval at (http://localhost:8080/app.js:729:1),
:165:14) at Proxy.invoker (eval at
(http://localhost:8080/app.js:729:1), :1738:18)

播放器似乎很好,我在尝试使用loadVideoById方法播放视频时只会出现此错误。

您可以在my site上自行查看错误。 (WIP)

重新创建错误:

  1. 创建新电台
  2. 在播放器下方的文字输入中,您可以搜索YouTube视频,搜索视频并在搜索结果中点击
  3. 点击播放列表中的内容进行播放
  4. 单击后退按钮返回主页
  5. 现在再前往返回你创建的电台
  6. 尝试重新播放视频
  7. 我没有发布任何代码,因为它只是在调用loadVideoById时,当我调试时,似乎播放器已加载并准备就绪(不是null)。

2 个答案:

答案 0 :(得分:2)

似乎问题是将Youtube播放器从DOM中分离出来,一旦你删除它就开始从Player对象中得到这个错误,我找不到解决方案所以我只是一直保持其组件使用

  

V-显示

而不是

  

V-如果

答案 1 :(得分:0)

如果看起来像这样...

html

MachineGuid

js

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Cryptography

这对我有用...

x = 0 #Global def foo(): global x for j in range(10): for i in range(10 - x): #Do your own thing here if j % 2 == 0: x += 1 else: break print("Inside: ", x) def main(): print("Before", x) foo() print("After", x) main() 或更改<youtube @ready="ready" ....>

ready(event) {
  this.player = event.target;
  ....
}