在运行时动态添加Javascript Silverlight 4

时间:2010-07-14 18:55:20

标签: c# javascript silverlight-4.0

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

这是我迄今为止没有运气的尝试。它可以创建脚本块,但是当我尝试添加该功能时。我唯一可以收集的是,由于页面正在加载,它无法添加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);

然后在文档上调用EXISTING函数,这可以...

HtmlPage.Window.Invoke("testing2");

如果我无法动态添加脚本块,我可以以某种方式从我的代码后面调用一些javascript吗?

感谢!!!

1 个答案:

答案 0 :(得分: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);