2011-12-19 23 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