Silverlight ShowDialog()在通过javascript触发时抛出安全异常

时间:2013-08-13 09:32:59

标签: javascript silverlight

我有一个像下面这样的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中的按钮单击事件似乎是用户启动的事件。请建议解决此问题。

谢谢,

1 个答案:

答案 0 :(得分:2)

对话必须是用户启动的,因为Silverlight组件中的用户交互事件(单击,按下按钮等)必须发生对话。 (实际上“由于”实际上是在交互之后必须在一定时期内发生的限制,而不是一些严格的限制,例如与调用堆栈有关)

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

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

相关问题