0

我有一个像下面这样的javascript函数。

var object;
   $(document).ready(function () {
                $("#buttonA").click(function (e) {

                object.doWork(); //triggers a method in Silverlight

                });
            });

Silverlight 中的方法

private void doWork()
{ 
  SaveFileDialog dialog = new SaveFileDialog();
  dialog.ShowDialog(); //throws error "Dialogs must be user-initiated"  
}

抛出错误的任何想法。我没有在 silverlight 的 doWork 方法中设置任何断点。javascript 中的按钮单击事件似乎是用户发起的事件。请提出解决此问题的方法。

谢谢,

4

1 回答 1

2

由于 Silverlight 组件中的用户交互事件(单击、按钮按下等),对话框必须由用户启动。(实际上“由于”实际上是交互后一定时间内必须发生的限制,而不是一些严格的限制比如调用栈相关)

从 Silverlight 安全限制的角度来看,这只是调用 Silverlight 的任意 javascript 方法,因此这是不可能的(有充分理由)。您需要从真正的 Silverlight 按钮打开对话框。

如果您确实需要从通过 javascript 调用的 Silverlight 控件中引发某种对话框,您可能需要实际回调以在 JavaScript/HTML 中打开一个对话框(或在任一环境中的某种弹出框)。

于 2013-08-13T10:10:47.133 回答