2011-12-19 49 views
1

我正在开发即将里面另一个被托管Silverlight应用程序托管的应用程序的IFrame:调用JavaScript中的IFrame

<hgroup class="title"> 
<h1>@ViewBag.Title.</h1> 
<h2>@ViewBag.Message</h2> 
</hgroup> 
<script type="text/javascript"> 
    function testMethod() { 
     alert(1); 
    }  
</script> 
<iframe src="URL of the silverlight application" width="750" height="500"/> 

这只是用于测试目的的虚拟应用程序(我使用的是默认的MVC 4模板 - 这实际上是Contacts.cshtml文件)

这是我称之为JavaScript函数的部分。

HtmlPage.Window.Invoke("testMethod"); 

任何建议怎么做/我在做什么错了?

+0

你在javascript控制台中得到任何错误?您是否启用了HTMLBridge:http://msdn.microsoft.com/en-us/library/cc645023(v=vs.95).aspx – 2011-12-19 13:13:37

+0

是的,我做了(现在),但仍然没有...我很新web开发,所以不能这么精确:/两者都托管在本地主机atm(本地主机/ MvcApplication1和本地主机/ SilvelrightApp) – 2011-12-19 13:27:54

+0

所以你确实设置了'enableHtmlAccess'参数? – 2011-12-19 13:30:53

回答

1

尝试: -

ScriptObject parent = HtmlPage.Window.GetProperty("parent") as ScriptObject; 
if (parent != null) 
{ 
    parent.Invoke("testMethod"); 
} 
+0

不,这是行不通的 – 2011-12-20 12:10:25

+0

@Ivan:什么都行不通。父母为空? – AnthonyWJones 2011-12-20 12:17:12

+0

我第一次测试它我得到一个错误,但现在它似乎工作......也许我拼错了一些事情......对此感到抱歉......并感谢您的解决方案:) – 2011-12-20 12:36:59

0

这是什么在这种情况下

HtmlPage.Window.Eval("if(typeof window.parent.testMethod== 'function'){window.parent.testMethod()};"); 

我知道.Eval应避免,但它看起来就像是我的唯一的方式为我工作:/

+0

这将是适当的解决你为什么需要诉诸.Eval?基于上述,我的答案也应该起作用。因此有些事情还有待理解。 – AnthonyWJones 2011-12-20 12:19:36