我试图在运行时在我的代码中有一个方法在运行时添加一个函数。 我可以毫无问题地动态添加元素到我的文档。所以我尝试了添加脚本块的相同策略。
这是我迄今为止没有运气的尝试。它可以创建脚本块,但是当我尝试添加该功能时。我唯一可以收集的是,由于页面正在加载,它无法添加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吗?
感谢!!!
答案 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);