【问题标题】:Get the silverlight player into fullscreen mode from outside the silverlight code从 silverlight 代码之外让 silverlight 播放器进入全屏模式
【发布时间】:2011-11-02 00:38:09
【问题描述】:

我在我的 asp.net 页面中嵌入了一个 silverlight mediaElement,如下所示:

<object id="SilverlightPlayer" data="data:application/x-silverlight," 
         type="application/x-silverlight-2" width="753" height="468" >
         <param name="source" value="ClientBin/VideoPlayer.xap"/>  
         <param name="EnableGPUAcceleration" value="true" />
         <param name="OnResize" value="HandleResize" />
         <param name="autoUpgrade" value="true" />
         <param name="onLoad" value="pluginLoaded" />
         <param name="windowless" value="true" />
         <param name="background" value="transparent" />
         <param name="initParams" id="SLInitParameters" />                    
</object>     

我正在从 asp.net 端实现所有播放器控件并使用 javascript 桥调用 SL 方法。除了能够将silverlight播放器置于全屏模式之外,一切正常。 content.IsFullScreen = True;

我尝试过从 javascript 调用方法:

[ScriptableMember]
public void mediaFullScreen()
{
    var content = Application.Current.Host.Content;
    content.IsFullScreen = !content.IsFullScreen;
}

我在 Silverlight 代码中放置了一个可以正常工作的按钮。所以,我让javascript调用了上面的函数。然后,我更改了调用 SL 全屏按钮上的单击事件的代码,但是,这也不起作用:

ButtonAutomationPeer peer = new ButtonAutomationPeer((Button)this.fullScreenButton);
IInvokeProvider ip = (IInvokeProvider)peer;
ip.Invoke(); 

我什至在 SL 代码中连接了一个事件处理程序来处理标签上的点击事件:

HtmlDocument htmlDoc = HtmlPage.Document; 
HtmlElement htmlEle = htmlDoc.GetElementById("buttonFullScreen");
htmlEle.AttachEvent("onclick", new EventHandler(this.OnConvertClicked)); 

无论如何我可以让 SL 从我在 asp.net 代码中的标签进入全屏模式吗? (使用 VS2010 和 SL4)

谢谢, 戴夫

【问题讨论】:

标签: asp.net silverlight


【解决方案1】:

来自full screen support 文档:

基于 Silverlight 的应用程序只能在 响应用户发起的操作。

和:

限制启用全屏模式的操作可确保用户始终是全屏模式行为的发起者。

其他情况也是如此,例如启动打开文件对话框。

如果您需要从 JavaScript 启动,您可能必须从 Silverlight 全屏模式转向另一种方法,即在浏览器中最大化它。

【讨论】:

  • 我也看到了。我认为ip.Invoke(); 会解决这个问题,因为它是从 SL 代码中单击按钮。
  • 我认为您需要查看 Microsoft 的代码以了解他们如何检测“用户启动的操作”,因为您似乎基本上需要击败它。如果你能这么容易做到这一点,这个限制的“安全”方面不是不存在吗?
  • 我想知道它是如何检测用户发起的操作的。我想如果我想使用全屏模式,我需要在我的 SL 代码中保留一个按钮。或者,更有可能的是,我将不得不使用自己的全屏模式。叹息!
  • 鉴于 SL 全屏的限制(例如,没有键盘,其他各种东西),您可能还是想这样做。在 Silverlight 5 中,受信任的浏览器内应用程序不应该对用户启动的操作有限制(我敢肯定,这对您来说没什么好处)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多