javascript - 从 JavaScript 调用 OpenFileDialog Silverlight

标签 javascript silverlight file-upload

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

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 来上传文件?感谢您的帮助。

最佳答案

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

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

关于javascript - 从 JavaScript 调用 OpenFileDialog Silverlight,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2730823/

相关文章:

javascript - 无论父级如何,查找相同类型的前一个元素

Javascript x undefined object /数组

javascript - 先渲染 Javascript,再渲染 PHP

flash - 使用Silverlight/Flash预览PDF和PowerPoint文件

c# - 如何转到 IEnumerable 中的特定项目

file-upload - golang上传文件err运行时错误索引超出范围

ruby-on-rails - 在 Rails 中上传文件

php - 使用 Laravel 5 上传 pdf 文件

javascript - 无法序列化在 Controller 中使用两个参数的帖子

c# - 只读集合 c# wp7 不支持操作