首先我要抱怨一下,silverlight 4在windowless模式下无法使用中文输入。所以对于下面所说的方法存在着缺陷。
一、嵌入html页面
使用的工具为一个htmlhost的免费插件,使用它可以在silverlight中嵌入html页面,网址
http://www.divelements.com/silverlight/tools.aspx
使用方法如下所示,其中 HtmlEditor.htm 页面中包含了一个js 的ckEditor 以及读取编辑器的一些js函数。
注意silverlight 需设置为 windowless 模式下。原理应该是直接在网页上添加一个html frame 元素然后将其
覆盖在silverlight之上。
二、调用嵌入页面的js代码
现在的问题是如何调用嵌入页面的js代码,由于其不属于silverlight同一个页面,所以无法直接通过silverlight
的技术去调用。网上查了很多资料都没解决方法,而且实际上我是刚转行网站,html 和 js神马的对于我来说真是浮云。
还好有威风的项目经理帮我解决这个问题。
解决方法是在silverlight的页面上写一个代理函数,然后在silverlight中就可以调用该代理函数来读取或者操作
嵌入页面中的编辑器了
解释下
getEditorFrame函数,该函数返回嵌入的html iframe窗口。
调用某个iframe窗口的js代码可使用以下方法,兼容IE、firefox
window.parent.document.getElementsByTagName("iframe")[x].contentWindow.getAllImgSrc();
x:可为0,1,2,3..
frame.contentWindow.getAllImgSrc函数 为该frame窗口页面HtmlEditor.htm其中的js函数
三、总结
silverlight 4 现在很少有好用的htmleditor控件,而使用以上方法由于需设置windowless模式导致插件上所有
的控件都无法输入中文。对于silverlight 整站应用来说,是悲剧的。
所以最后我们弃用了这个方法直接弹出另一个不是纯silverlight的页面进行编辑,然后通过SL消息机制与主页面交互。
应该有另一个方法就是把编辑器单独写成一个silverlight插件,然后在SL页面中叠加上这个插件,但似乎布局还有滚动控制
什么的很难控制,谁能给个思路?
不能输入中文这个SL4 还是不怎么给力,希望SL5给力点。