使用ExtJS 4.1的Google Apps脚本

时间:2013-02-10 03:41:34

标签: javascript extjs google-apps-script google-caja

问:是否可以以任何方式在Caja模板中添加ExtJS 4?

例如,在将加载指令写入HTML标题时:

 <link rel="stylesheet" type="text/css" href="http://cdn.sencha.io/ext-4.1.1a-commercial/resources/css/ext-all.css"/>
 <script type="text/javascript">
   document.write("\x3Cscript type='text/javascript' src='http://cdn.sencha.io/ext-4.1.1a-commercial/ext-all.js'>\x3C/script>");
 </script>

结果如下:

Invalid script or HTML content: http://cdn.sencha.io/ext-4.1.1a-commercial/resources/css/ext-all.css:18+6635 - 6636: Expected <Identifier> not : http://cdn.sencha.io/ext-4.1.1a-commercial/resources/css/ext-all.css:18+6621 - 6652: Skipping malformed content http://cdn.sencha.io/ext-4.1.1a-commercial/resources/css/ext-all.css:18+6621 - 6672: Skipping malformed content http://cdn.sencha.io/ext-4.1.1a-commercial/resources/css/ext-all.css:18+82707 - 82708: Expected <Identifier> not : http://cdn.sencha.io/ext-4.1.1a-commercial/resources/css/ext-all.css:18+82677 - 82724: Skipping malformed content http://cdn.sencha.io/ext-4.1.1a-commercial/resources/css/ext-all.css:18+82677 - 82744: Skipping malformed content http://cdn.sencha.io/ext-4.1.1a-commercial/resources/css/ext-all.css:18+111019 - 111020: Expected <Identifier> not : http://cdn.sencha.io/ext-4.1.1a-commercial/resources/css/ext-all.css:18+111002 - 111036: Skipping malformed content http://cdn.sencha.io/ext-4.1.1a-commercial/resources/css/ext-all.css:18+111051 - 111052: Expected <Identifier> not : http://cdn.sencha.io/ext-4.1.1a-commercial/resources/css/ext-all.css:18+111037 - 111068: Skipping malformed content http://cdn.sencha.io/ext-4.1.1a-commercial/resources/css/ext-all.css:18+111002 - 111088: Skipping malformed content http://cdn.sencha.io/ext-4.1.1a-commercial/resources/css/ext-all.css:18+200996 - 200997: Expected <Identifier> not : http://cdn.sencha.io/ext-4.1.1a-commercial/resources/css/ext-all.css:18+200982 - 201013: Skipping malformed content http://cdn.sencha.io/ext-4.1.1a-commercial/resources/css/ext-all.css:18+200982 - 201033: Skipping malformed content http://cdn.sencha.io/ext-4.1.1a-commercial/resources/css/ext-all.css:18+217948 - 217949: Expected <Identifier> not : http://cdn.sencha.io/ext-4.1.1a-commercial/resources/css/ext-all.css:18+217931 - 217965: Skipping malformed content http://cdn.sencha.io/ext-4.1.1a-commercial/resources/css/ext-all.css:18+217931 - 217985: Skipping malformed content http://cdn.sencha.io/ext-4.1.1a-commercial/resources/css/ext-all.css:18+219058 - 219075: Not a valid uri: 'url(#default#VML)' http://cdn.sencha.io/ext-4.1.1a-commercial/resources/css/ext-all.css:18+219049 - 219075: Skipping malformed content HtmlOutput:11+132 - 12+1: Unclosed string.

注意到Caja验证错误与CSS有关,但是当Ext对象无法构建时 - 这没有任何区别。因为看起来只有jQuery和jQueryUI可用作precajoles:Google Code。如果jqGrid至少可以工作,这可能是另一种选择(但由于我打算使用ExtJS,我宁愿只是将环境切换到更兼容的东西)。

Maestro HTML-app只是说:“无法加载ext-all.js”。没有尝试在驱动器上“本地”包含lib - 但我想这样可以应用相同的JS阉割。

一般来说,嵌入第三方脚本的安全性并不是一件坏事 -

但如果安全功能无法被覆盖 - 那就会阻碍创新。

可能只是假设它不受支持并继续前进; 这些专有解决方案还剩下什么 - 他们可能会建立自己的互联网,但没有我。

1 个答案:

答案 0 :(得分:0)

我在Caja工作。我没有特别关注ExtJS,但是新JS框架的常见问题是Caja没有准确实现的一些小功能或特殊情况。网络平台庞大,我们必须优先考虑人们期望使用的功能,因为“在继续之前实施所有内容”是不切实际的。

我建议您file an enhancement request支持ExtJS。如果您要检查ExtJS的CSS并确定Caja拒绝它的哪一部分(例如通过将错误与未编号版本中的行号进行比较,或者如果需要,删除部分直到它不被拒绝),那将特别有用。我们可以专注于添加必要的功能。


请注意,您不应期望document.write使用<script>元素;动态定义的脚本通常在Google Apps脚本的当前Caja部署中不可用。请改用HTML中的文字<script>元素。这可能就是为什么你只看到与CSS相关的错误,既没有成功,也没有关于ExtJS本身的错误。 (我刚录制了we ought to give an error message in this case。)