0

我最近制作了一个 YouTube JukeBox。我已经完成了所有我想做的事情,除了我试图让通知在播放事件上工作/显示,只有在上一个视频已经结束时。

我尝试设置一个变量,然后在视频结束为真时更新它,但是当我在播放事件中检查它时它一直返回“未定义”。

function onPlayerStateChange(event)
{
   var videoData = player.getVideoData();
   if (event.data == 0)
   {
       var videend = 1;
       player.loadVideoById($("input[name=video]:radio:checked").closest('tr').next().find('input').prop("checked", true).val());
       $('.playlist').scrollTo($("input[name=video]:radio:checked").closest('tr'));
   }
   if (event.data == 1)
   {
       $("#info").css("display","none");
       if(videend == 1)
       {
           var videend = 0;
           new Notification(videoData['author'], {
               dir: "auto",
               lang: "",
               body: videoData['title'],
               icon: "http://vman315.com/base/images/Pinkie-Pie-mustache.png",
           });
       }
    document.title = '\u25B6 ' + videoData['title'];
   }
}

例子

如果有人可以提供一些关于我做错了什么的见解,我将不胜感激。

4

1 回答 1

0

我在 Google Chrome 版本 29.0.1547.66 m 中为我工作

似乎Chrome中的通知被限制自动运行,您必须进入您的网络浏览器并将它们设置为,允许来自所有网站的通知而不询问,或者每次都询问通知。

我的浏览器设置为每次都要求允许通知。但是,您的文档中没有任何代码来请求运行通知的权限。当我将浏览器设置为在不询问的情况下运行通知时,它可以正常工作。

唯一的另一个问题是你的

"var videend = 1;" 

在本地函数内部没有被访问。我将它移到函数内部,然后您的通知 if 语句开始工作。

http://jsfiddle.net/83tju/3/

有用的资源

https://developer.mozilla.org/en-US/docs/Web/API/notification

http://www.w3.org/TR/notifications/#permission

阅读这些资源后,您用于创建通知的语法似乎不适用于我正在使用的 chrome 版本,这可能解释了为什么我必须阻止浏览器请求通知?没有把握。稍后我将不得不在更新的浏览器上查看此内容。

于 2014-06-06T20:58:25.163 回答