阻止的HTML视频元素源无法触发错误事件

时间:2017-10-01 03:01:21

标签: javascript html video

我在一个页面上嵌入了一个视频,只有在用户登录到其他域时才能访问该视频。如果他们没有登录,我想听一个错误事件并将元素更改为登录页面的链接。不幸的是,.mediafallbacklink和an event listener都没有正常工作。仅显示已禁用的视频播放器。 有什么想法吗?

在测试中,embed元素位于localhost:1337,视频源位于localhost

<video data-setup-lazy="{&quot;language&quot;: &quot;en&quot;, &quot;fluid&quot;: true}" class="video-js" preload="auto" controls="true" title="Export Compliance">
  <source src="http://localhost/pluginfile.php/myvideo.mp4" type="video/mp4">
  <a class="mediafallbacklink" href="http://localhost/pluginfile.php/myvideo.mp4">Video Source</a>
</video>

JavaScript的:

$(function(){
  console.log("this works:", document.querySelector("video"));
  document.querySelector("video").onerror = function(event) {
    console.log("but this never fires:", event);
    var a = document.createElement("a");
    a.href = this.src;
    a.innerHTML = "Video Source";
    a.download = videoPlayer.src;
    this.parentElement.replaceChild(a, this);
  };
});

此错误显示在JavaScript控制台(Chrome 60)中:

GET http://localhost/pluginfile.php/myvideo.mp4 
net::ERR_UNEXPECTED_PROXY_AUTH

1 个答案:

答案 0 :(得分:1)

g.data_source代码如果无法找到指定的网址,则不会触发video事件。
相反,您应该在error标记中收听<source>标记中的<video>标记,如下所示。

&#13;
&#13;
error
&#13;
$("video source").on("error", function(e) {
  alert(e.type);
});
&#13;
&#13;
&#13;