五、InvokeScript方法及ScriptNotify事件应用举例
根据前面的控件定义,我们知道:InvokeScript方法能够执行在当前加载的HTML中定义的指定脚本。
根据MSDN指示,如果对InvokeScript的调用加载跨域内容,我们可以不再用InvokeScript与该内容交互。而且,出于安全原因,你不能在
中承载的脚本目标上调用此方法。
InvokeScript方法提供了如下两种重载形式:
(1)public object InvokeScript(string scriptName);
(2)public object InvokeScript(string scriptName, params string[] args);
在下面的示例中,调用了InvokeScript,它在以下HTML中反过来调用LoadSearch函数。注意,这个HTML文件必须与Silverlight应用程序承载在同一个域中。
你可以使用Window.external对象的Notify方法从HTML中的JavaScript传输到托管代码。在发生此情况时,将触发ScriptNotify事件。
现在,让我们来观察一下客户端后台代码:
接下来,让我们再来观察一下客户端Silverlight 4 XAML脚本:
归纳来看,InvokeScript方法及ScriptNotify事件联手提供了一种从WebBrowser控件中与其所承载的HTML中的JavaScript代码进行的一种重要途径。
六、联手使用WebBrowser和WebBrowserBrush控件
WebBrowser和WebBrowserBrush控件设计为一起使用,以便在浏览器外运行的Silverlight应用程序中显示丰富的HTML内容。
你不能旋转、应用效果或创建部分透明的WebBrowser控件。此外,不能使用WebBrowser控件覆盖HTML上的Silverlight内容。对于这些情况,应该使用WebBrowserBrush。
(一)WebBrowserBrush简介
WebBrowserBrush是Brush对象的类型,该对象类似于VideoBrush。但是,该对象使用HTML内容而不是视频内容来绘制区域。 此HTML内容由WebBrowser控件提供。与其他画笔类型类似,你可以使用WebBrowserBrush来绘制以下内容:
与其他类型的画笔不同,你必须通过调用Redraw方法,手动更新WebBrowserBrush中的内容。
为了使用WebBrowserBrush,你需要事先创建WebBrowser控件并且设置其Source属性。然后,你可以将 WebBrowserBrush应用于要绘制的对象,并且将该WebBrowserBrush对象的SourceName属性设置为你创建的 WebBrowser的名称。
如果WebBrowser中的内容有更改,你必须调用Redraw方法更新 WebBrowserBrush。此外,用户无法与通过WebBrowserBrush一起显示的内容交互。下面的示例说明如何显示具有 WebBrowserBrush的内容。在这个示例中,在用户移动鼠标时,将更新WebBrowserBrush的内容。
|
|
|