【发布时间】:2017-02-28 00:55:50
【问题描述】:
我有一个 MVC 应用程序。主视图将有一个带有录音列表的网格。每个录音旁边都有一个播放按钮。实际上,播放按钮是一个 ActionLink。在该 ActionLink 的 OnClick 事件上,我在 JQuery 对话框中打开另一个视图,该视图具有 Windows Media Player。 OnClick 事件在 Javascript 中定义(参见下面的代码)。问题是当我关闭对话框窗口媒体播放器时继续播放录音!我试图删除媒体播放器对象 $(#mediaplayer).remove(),即使它已被删除但仍在播放。我试图将整个 Div 的 InnerHtml 设置为“”,Div 被删除但媒体播放器仍在播放。唯一对我有用但不是我想要的解决方案是在对话框的关闭事件中执行 window.location.reload() ,它将重新加载父页面我不想做的事情,因为如果用户是在网格的第二页上,它会将他带到第一页。任何人都可以帮忙吗?
@Html.ActionLink("Play", "blablabla", new { controller = "Default", @url = MyUrl }, new { @class = "button" })
<script type="text/javascript">
$(document).on("click", ".button", function (e) {
var url = $(this).attr('href');
var dialog1 = $('<div id="divPlayer" style="display:none"></div>').appendTo('body');
dialog1.load(url, {},
function (responseText, textStatus, XMLHttpRequest) {
dialog1.dialog({
close: function (event, ui) {
dialog1.empty();
dialog1.dialog('destroy').remove();
},
draggable: true,
width: 340,
height: 105,
resizable: false,
closeOnEscape: true,
modal: true,
});
});
dialog1.unload(url, {});
return false;
});
</script>
这是媒体播放器的嵌入代码
<object width="320" height="40"
classid="CLSID:22d6f312-b0f6-11d0-94ab-0080c74c7e95"
id="mediaplayer1" style="border:none">
<param name="Filename" value="@Model.URL">
<param name="AutoStart" value="True">
<param name="ShowControls" value="True">
<param name="ShowStatusBar" value="False">
<param name="ShowDisplay" value="False">
<param name="AutoRewind" value="True">
<embed id='altMediaPlayer' type="application/x-mplayer2"
pluginspage="http://www.microsoft.com/Windows/Downloads/Contents/MediaPlayer/"
width="320" height="40" src="@Model.URL"
filename="@Model.URL" autostart="True"
showcontrols="True" showstatusbar="False"
showdisplay="False" autorewind="True">
</embed>
</object>
【问题讨论】:
-
您应该考虑使用 HTML5
audio元素,该元素可以通过 JavaScript 完全控制,而不是媒体播放器插件。为了向后兼容,有一些库在旧浏览器中填充了功能,例如mediaelementjs.com -
我尝试使用 HTML 5 音频元素,但不幸的是它无法播放录音。它说无效的来源。我正在调用一个 Web 服务,它返回录音的 URL,Window Media Player 能够流式传输并播放它,但 HTML 5 音频播放器无法识别我猜的格式:/
标签: jquery jquery-ui asp.net-mvc-5 jquery-ui-dialog embedded-media