【问题标题】:Call OpenFileDialog Silverlight from JavaScript从 JavaScript 调用 OpenFileDialog Silverlight
【发布时间】:2010-04-28 15:21:39
【问题描述】:

我正在尝试调用 Silverlight 4 组件中的函数来打开文件对话框并将文件上传到服务器。 Silverlight 中一切正常,但我想从 JavaScript 调用该组件。所以我从 [ScriptableMember] 的 C# 函数调用按钮单击处理程序。调用函数时出现以下错误:

System.Security.SecurityException: Dialogs must be user-initiated. 
at System.Windows.Browser.ManagedObjectInfo.Invoke(ManagedObject obj, InvokeType
invokeType, String memberName, ScriptParam[] args) at
System.Windows.Hosting.ManagedHost.InvokeScriptableMember(IntPtr pHandle, Int32 nMemberID,
Int32 nInvokeType, Int32 nArgCount, ScriptParam[] pArgs, ScriptParam& pResult,
ExceptionInfo& pExcepInfo)

我的代码基于 Tim Heuer 的教程,可在此处找到:http://www.silverlight.net/learn/videos/silverlight-videos/openfiledialog-and-file-upload/

我理解为什么会抛出错误,某种程度上,用户的“点击”是在 JavaScript 中完成的,并且可能没有通过 Silverlight。对于 Silverlight,这只是一个函数调用。

这是 Silverlight 4 的新政策吗?是否仍然可以只在屏幕后面使用 Silverlight 来上传文件?任何帮助表示赞赏。

【问题讨论】:

  • +1 完全相同的问题,我不想失望...

标签: javascript silverlight file-upload


【解决方案1】:

我相信在 Silverlight 2 中这可能是允许的,但从那以后就不允许了。这是一个破坏性的行为更改,需要通过用户操作在 Silverlight 中“用户启动”操作:类似于按键或鼠标点击带有点击事件处理程序的按钮。

没有办法以任何其他方式弹出和打开文件对话框。

【讨论】:

  • 感谢 Jeff 的澄清,虽然我有点失望 :)
  • 虽然令人失望,但通过 JS 的情况可能与弹出窗口一样糟糕:想象一下,当您浏览某个站点时,出于某种原因或其他原因弹出打开文件对话框会很烦人。它会阻止浏览器并等待某些事情发生——如果它发生在循环中,那就更糟了。
猜你喜欢
  • 2014-03-09
  • 2011-08-15
  • 1970-01-01
  • 1970-01-01
  • 2010-12-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多