MVC アプリケーションがあります。メイン ビューには、記録のリストを含むグリッドが表示されます。各録音の横には再生ボタンがあります。実際には、再生ボタンは ActionLink です。その ActionLink の OnClick イベントで、JQuery ダイアログで別のビューを開きます。このビューには Windows Media Player があります。OnClick イベントは Javascript で定義されています (以下のコードを参照)。問題は、ダイアログの Windows メディア プレーヤーを閉じると、録音の再生が続行されることです。メディア プレーヤー オブジェクト $(#mediaplayer).remove() を削除しようとしましたが、削除しても再生されます。Div 全体の InnerHtml を "" に設定しようとしました。Div は削除されますが、メディア プレーヤーは引き続き再生されます。私にとってうまくいった唯一の解決策は、ダイアログのクローズイベントで window.location.reload() を実行することではありません。親ページをリロードします。ユーザーがグリッドの 2 番目のページにいる場合、最初のページに移動するためです。誰でも助けてくれますか?
@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>