CanvasEditor Test
Web组件的次序
当使用highlight-with-trimpre.js时,该文件需放在CanvasEditor.js的下面。
否则,highlight-with-trimpre.js将试图加亮CM6的内容,犯了越俎代庖的错误。
与LiveEditor协作的问题
CanvasEditor特殊的地方在于,它需要灵活处置JavaScript标签与CSS标签。
设置自己的iframe模板
利用LiveEditor的钩子方法doOnSetupIframeTemplateSrc,Canvasditor进行特定的设置。
将iframe的高度值设置为200px,并选用独立的模板。
JavaScript标签
与其在每个CanvasEditor的JavaScript标签处都要编写:
的代码,不如将这三行必不可少的代码自动插入到JavaScript标签的代码中。
LiveEditor有一个钩子方法doBeforeApplyJSFromTab,在用户按下Run按钮时被调用。只要该方法返回一个字符串,则将该字符串作为要运行的JavaScript代码放在JavaScript标签代码的前面。
作为基类的LiveEditor只返回一个空字符串,而作为子类的CanvasEditor可返回实际需要的字符串。例如:
上面代码可自动应用高分辨率。
钩子方法doOnImportJSModule可用于导入所需的JavaScript模块:
同样,作为子类,CanvasEditor导入了多个工具模块:
如此,CanvasEditor中的JavaScript代码便可使用:
设置多种CSS样式
从实际需要来看,CanvasEditor共需要3个设置CSS的地方。
第一个是canvas-default-style.css文件,作为每个CanvasEditor都需共享的初始样式,由iframe-template.html文件设置选用。一般可设置如下:
因为用户可能要多次运行,当运行到以下代码:
必须确保clientWidth及clientHeight回到初始值,否则,其大小将持续不断地增大。因此,给定初始值很重要。
第二个CSS可设置特定特殊的样式,以供同一页面上的部分CanvasEditor共同使用。这种样式通过设置CanvasEditor的result-default-css属性来设置。
上面的文件中设为style-at-running.css文件,表示这种设置只有当用户按下Run
按钮后才会发生作用。
iframe-template.html文件有个地方专门接收上面CSS文件的内容:
第三个CSS是CSS标签下的的内容,可应用于每个CanvasEditor的具体样式。同样,iframe-template.html文件也有地方专门接收此类设置:
通过上面的设置,应足可应对各种复杂的情况。
通过CSS标签设置CSS样式
无论是否有CSS设置,均能自动应对高分辨率设备。
通过属性设置CSS样式
下面通过CanvasEditor的属性result-default-css来设置特定的样式。
style-at-running.css文件的内容:
实际效果:
引用Canvas的宽高值
上面的代码:
在涉及到需要引用canvas的宽度及高度的值以参与运算时,需分别使用clientWidth及clientHeight。
支持网格
设置is-use-grids属性值:
则可绘制网格。
精细调节Canvas
可新建一个名为min-460.css的文件,其内容为:
上面的CSS设置,可取得以下效果:
- 当横屏时,在Chrome浏览器中不显示横向及竖向的滚动条
- 当竖屏时,在Chrome浏览器中只显示横向滚动条
- canvas的宽度至少为460px。
canvas的高度已由iframe-height来设置,默认为200px。
从视觉上看,canvas将完全铺满父容器,且在Chrome中自动隐藏滚动条,但在竖屏时,可保证获得最小的宽度值。