Monday, March 26, 2012

Windows Media Player incompatible with AJAX?

Here's an odd one. I have the Windows Media Player imbedded in a page. I have links on the page which fire a javascript to set the player url and start the player. So far so good. Everything works.

Now add the AJAX bits and make the links asp:LinkButtons. I fire the javascript on the OnClientClick method. The <object> tags for the video player are outside of the UpdatePanel so it doesn't get refreshed. Remember, I want to update it with javascript. So when I click a link, the player loads the correct URL, but will not play! I have to press the play button manually to get it to play.

So what is AJAX doing that prohibits WMP from starting the stream? I have tried starting the player with an addtional command (document.Player.controls.play()) and that doesn't work either. Yet as soon as I remove the AJAX bits, it works just fine. Here's my test .aspx page (minus the code behind page. I'm not triggering any server code in this example). Also, the reason I'm using a LinkButton control is because in my real app, the video links are being displayed in a datagrid.

"C#" AutoEventWireup="true" CodeFile="vidTest.aspx.cs" Inherits="VideoLibrary_vidTest" %> 
1<%@dotnet.itags.org. Page Language="C#" AutoEventWireup="true" CodeFile="vidTest.aspx.cs" Inherits="VideoLibrary_vidTest" %>2<%@dotnet.itags.org. Register Assembly="System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" Namespace="System.Web.UI" TagPrefix="asp" %>3<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">4<html xmlns="http://www.w3.org/1999/xhtml">5<head runat="server">6<title>Untitled Page</title>78<script type="text/javascript" language="javascript">9function StartPlayer(filename)10{11document.Player.url = "mms://communitymedical.org/" + filename;12document.Player.controls.play();13}14</script>1516</head>17<body id="link">18<form id="form1" runat="server">19<asp:ScriptManager ID="ScriptManager1" runat="server">20</asp:ScriptManager>21<div>22<object id="Player" height="320" width="320" classid="CLSID:6BF52A52-394A-11d3-B153-00C04F79FAA6">23<param name="autoStart" value="True">24</object>25<br />26<br />27<asp:UpdatePanel ID="UpdatePanel1" runat="server">28<ContentTemplate>29<asp:LinkButton ID="linkButton" runat="server" OnClientClick="javascript:StartPlayer('flex.wmv')">30Click Me</asp:LinkButton>31</ContentTemplate>32</asp:UpdatePanel>33</div>34</form>35</body>36</html>
"text/javascript" language="javascript">function StartPlayer(filename){document.Player.url ="mms://communitymedical.org/" + filename;//document.Player.controls.play();}</script></head><body id="link"><form id="form1" runat="server"><asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager><div><object id="Player" height="320" width="320" classid="CLSID:6BF52A52-394A-11d3-B153-00C04F79FAA6"><param name="autoStart" value="True"></object><br /><br /><asp:UpdatePanel ID="UpdatePanel1" runat="server"><ContentTemplate><asp:LinkButton ID="linkButton" runat="server" OnClientClick="javascript:StartPlayer('flex.wmv')">Click Me
"text/javascript" language="javascript">11function StartPlayer(filename)12{13document.Player.url ="mms://communitymedical.org/" + filename;14//document.Player.controls.play();15}16</script>1718</head>19<body id="link">20<form id="form1" runat="server">21<asp:ScriptManager ID="ScriptManager1" runat="server">22</asp:ScriptManager>23<div>24<object id="Player" height="320" width="320" classid="CLSID:6BF52A52-394A-11d3-B153-00C04F79FAA6">25<param name="autoStart" value="True">26</object>27<br />28<br />29<asp:UpdatePanel ID="UpdatePanel1" runat="server">30<ContentTemplate>31<asp:LinkButton ID="linkButton" runat="server" OnClientClick="javascript:StartPlayer('flex.wmv')">32Click Me333435363738

the player is compatible, but the onclientclick in an update panel isn't. look at the client script manager to register a script block in the update panel.

-- bruce (sqlwork.com)


The thing is, the script actually fires. The player knows what video it's supposed to play. If I put an alert() command in the script, it will fire the alert. So I know the script is being executed. I just don't understand why the player won't PLAY, when it plays fine without AJAX enabled.

But I'm willing to try workarounds... how do I register a script block in the update panel? Is that different from just using Page.ClientScript.RegisterScriptBlock(...)?

Thanks

D


Got it fixed. That was it. Once I registered the script to the UpdatePanel, the video player worked fine. I can't say that I understand it.... but it works now. Thanks!

Dana

Whiplash:

The thing is, the script actually fires. The player knows what video it's supposed to play. If I put an alert() command in the script, it will fire the alert. So I know the script is being executed. I just don't understand why the player won't PLAY, when it plays fine without AJAX enabled.

But I'm willing to try workarounds... how do I register a script block in the update panel? Is that different from just using Page.ClientScript.RegisterScriptBlock(...)?

Thanks

D

No comments:

Post a Comment