【问题标题】:Silverlight 3 - Refresh an IFrameSilverlight 3 - 刷新 IFrame
【发布时间】:2010-04-29 16:49:28
【问题描述】:

我有一个具有 DIV 和 IFRAME 的 ASP.NET 应用程序。 DIV 托管我的 Silverlight 应用程序。 IFRAME 指向我网站上的另一个页面。当用户单击我的 Silverlight 应用程序中的按钮时,我试图在 IFRAME 页面上的隐藏字段中设置一个值并提交页面。

目前,我正在托管我的 Silverlight 应用程序的页面中调用一个 JavaScript 函数。我正在尝试使用 JavaScript 函数通过 HTML DOM 与 IFRAME 中的页面进行交互。奇怪的是,每当我访问 FRAME 对象上的文档元素时,都会向我的 Silverlight 应用程序传回一条消息:

“类型‘slBridge’不存在。参数名称:typeName”

这是在我的 Silverlight 应用程序中调用 JavaScript 函数的代码。

HtmlPage.Window.CreateInstance("slBridge", new string[] { });

这是我的 JavaScript 代码:

  function slBridge() {
    alert("Getting to execute JS");
      for (i = 0; i < window.frames.length; i++) {
        if (window.frames[i].name == "bridgeIFrame") {
        alert(windows.frames[i].document.title);      // If I remove this line it works. I can print the value of "i" as well
        break;
      }
    }                                
  }     

是否有一些我不知道的安全问题?如果是这样,我如何从我的 SL 应用程序访问 IFrame?

谢谢

【问题讨论】:

    标签: silverlight


    【解决方案1】:
    Dim domelement As HtmlElement = System.Windows.Browser.HtmlPage.Document.GetElementById("iframe")
        If domelement.GetStyleAttribute("visibility") = "visible" Then
            domelement.SetStyleAttribute("zIndex", "3")
        End If
    

    从 SL 更改 dom 中的 iframe 示例

    【讨论】:

      【解决方案2】:

      我不确定您为什么使用CreateInstance。要调用函数,请使用Invoke:-

       HtmlPage.Window.Invoke("slBridge");
      

      【讨论】:

      • 我也尝试过这种方法。但是,我仍然遇到同样的问题。有安全限制吗?
      • 只有在将 silverlight XAP 从不同站点拉到托管它的页面的站点时才会有安全限制。
      猜你喜欢
      • 2010-12-22
      • 1970-01-01
      • 2011-01-15
      • 2012-08-20
      • 2011-03-15
      • 1970-01-01
      • 1970-01-01
      • 2019-07-17
      相关资源
      最近更新 更多