2010-07-14 36 views
2

我想在运行时在我的代码中添加一个方法在运行时添加一个函数。 我可以动态地将元素添加到我的文档中,没有任何问题。所以我尝试了添加脚本块的策略。在运行时动态添加Javascript Silverlight 4

这是我迄今为止尝试过的,没有运气。它可以创建脚本块,但是当我尝试添加该功能时。我可以收集的唯一的事情是,自页面加载后,它不能添加JS方法。我试图在页面加载之前添加它。所以我想我可以添加脚本。如果我不能添加一个函数,我想至少在后面的代码中给它提供一些javascript以在运行时调用。

下面是我如何尝试动态添加脚本块......它在SetProperty()方法上抛出运行时错误。

HtmlElement script = HtmlPage.Document.CreateElement("script"); 
script.SetAttribute("type", "text/javascript"); 
script.SetProperty("innerHTML", "function testing() { alert('hello world'); }"); 
HtmlPage.Document.Body.AppendChild(script); 

然后调用这个工作文件的现有功能...

HtmlPage.Window.Invoke("testing2"); 

如果我不能动态添加脚本块可不知何故,我从我后面的代码调用一些javascript?

谢谢!

+0

我有这个相同的问题:这段代码似乎在大多数浏览器中都能正常工作,但在IE8和更早的版本中它已经爆炸了。您设置文本而不是innerHTML的解决方案效果很好。 – 2013-02-13 23:16:42

+0

@DuncanMatheson - 很高兴帮助你 – Gabe 2013-02-14 15:38:47

回答

4

好吧,我想通了,如何从后面的代码调用一些脚本...

下面介绍如何在运行时

HtmlPage.Window.Eval("window.close();"); 

这里援引一些脚本是一种动态创建JavaScript函数并将它们添加到您的页面以用于Silverlight应用程序。

// Create the script block 
var scriptElement = HtmlPage.Document.CreateElement("script"); 
scriptElement.SetAttribute("type", "text/javascript"); 
// Add a function called foo 
scriptElement.SetProperty("text", "function foo() { alert('hello foo!'); } "); 
// Append script block to the body of the page 
HtmlPage.Document.Body.AppendChild(scriptElement); 


// Now invoke the function from your silverlight application 
HtmlPage.Window.Invoke("foo", null); 
相关问题