C# 在运行时动态添加Javascript Silverlight 4

C# 在运行时动态添加Javascript Silverlight 4,c#,javascript,silverlight-4.0,C#,Javascript,Silverlight 4.0,我试图在运行时让代码中的一个方法在运行时添加一个函数。 我可以毫无问题地向文档中动态添加元素。因此,我尝试了添加脚本块的相同策略 这是我到目前为止所尝试的,但没有成功。它可以创建脚本块,但当我尝试添加函数时。我唯一能收集到的是,由于页面正在加载,它无法添加JS方法。我试图在加载页面之前添加此内容。所以我想我可以添加脚本。如果我不能添加函数,我希望至少在代码中为它提供一些javascript,以便在运行时调用 下面是我如何尝试动态添加脚本块。。。在SetProperty()方法上引发运行时错误 然

我试图在运行时让代码中的一个方法在运行时添加一个函数。 我可以毫无问题地向文档中动态添加元素。因此,我尝试了添加脚本块的相同策略

这是我到目前为止所尝试的,但没有成功。它可以创建脚本块,但当我尝试添加函数时。我唯一能收集到的是,由于页面正在加载,它无法添加JS方法。我试图在加载页面之前添加此内容。所以我想我可以添加脚本。如果我不能添加函数,我希望至少在代码中为它提供一些javascript,以便在运行时调用

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

然后,若要调用文档上的现有函数,则此操作有效

HtmlPage.Window.Invoke("testing2");
如果我不能动态添加一个脚本块,我能从我的代码中调用一些javascript吗


谢谢

我找到了如何从代码隐藏中调用一些脚本

下面是如何在运行时调用一些脚本

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);

我也遇到了同样的问题:这段代码似乎在大多数浏览器中都能正常工作,但在IE8和更早的版本中它就崩溃了。您设置文本而不是innerHTML的解决方案非常有效。@DuncanMatheson-很高兴它对您有所帮助
// 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);