问题标签 [google-caja]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
313 浏览

javascript - 在服务器端哄骗

我阅读了一些 google-caja wiki 页面并有兴趣使用它。我对 caja 的看法是,我们可以将一些 html(例如标签)发送到 google-caja 的服务器(哄骗服务),然后哄骗 html 和内容 javascript 然后发送到我们的页面。最后加载 google-caja 的 javaScript 为内容 javascript(在标签 div 中)提供虚拟 DOM。还有许多其他选项(例如禁用标签内容js)。

我想在服务器端使用此功能(cajole)。加载一些 html 块。然后将其作为字符串传递给 caja。然后将返回的带有必要 js(用于应用限制)的 cajole 字符串插入到我的 JAVA Web 应用程序响应中。

-Html 块,应该在服务器端加载或从数据库提供,并且是字符串- 我的 Web 应用程序的语言是JAVA

需要哪些 jars 和 jses 文件?从哪个函数开始?

谢谢你。

0 投票
2 回答
832 浏览

google-apps-script - 尝试在 Google App Script HTMLService 中发布 Ajax 帖子时出现问题(Caja 干扰?)

我有一个用 HtmlServices 制作的网页。这个页面有一个表单,我想提交给一个 GAS Web 应用程序,该应用程序作为 Web 服务运行。

当我使用谷歌应用脚​​本 UrlFetch 从我的第一个 GAS 应用程序调用我的网络服务时,我经常会超时。不幸的是,我们无法设置我认为大约 10 秒的 GAS UrlFetch 超时值。10 秒对于 GAS 应用程序复制文件、打开/编辑电子表格和发送电子邮件来说是不够的!

所以我决定在用 HtmlServices 构建的网页中使用 Jquery 并做一个 ajax 发布(因为我可以设置超时值)。(所以我的页面被 Google Caja 清理了)。据说Jquery得到了Caja的支持。

但我注意到 Ajax URL 总是被重写为第一个 Web 应用程序 URL(我想发布到的 url 由 Caja 更改)。在我看来,谷歌的 Caja 正在阻止 Ajax 调用。我在 GAS HtmlService 中找不到有关 Caja / Ajax 帖子限制的任何内容。

您对如何从 GAS Web App 调用 Web 服务有什么建议,而不受 GAS 超时限制?

0 投票
2 回答
920 浏览

google-apps-script - 为什么 Google Apps Script htmloutput 的 caja sanitization 在特定字符串上失败

我正在尝试准备 GAS 代码示例以嵌入 Google 协作平台和其他网站。我使用 HtmlService.createHtmlOutput 和 HtmlService.createTemplateFromFile() 和 template.evaluate().getContent() 来提供 google 应用程序脚本内容的 html 版本。根据这篇文章,这一切都很好。

现在我想使用 prettyify.js 美化代码。我使用嵌入在 caja中的版本,它几乎可以工作。然而,被美化的代码中的特定方法名称会从 htmlservice 引发错误。

不支持来宾构造对象对象的驯服。期望函数不是字符串:pln

具体来说,这段文字美化成功,

而这会引发错误

似乎特定的方法(奇怪,因为没有执行此代码,只是美化了),导致 caja sanitation 抱怨。

模板中的代码就是这样

我很难过。有任何想法吗?

0 投票
0 回答
1252 浏览

jquery - Caja / Google Apps 脚本和 jQueryUI 手风琴

这可能被证明是一个非常幼稚的问题,因为我刚开始使用 jQueryUI,但最好问一个愚蠢的问题,而不是疯狂地试图找出一个不属于我的错误。最终,我试图生成一个动态的项目列表,这些项目将作为 JQUI 手风琴显示给用户 - 问题是,它永远不会起作用。

我对文档的阅读(包括谷歌认为这应该在 Caja / GAS 沙箱中工作)是这应该会产生 10 个“行”的手风琴优点。但在实践中,只有三个转换为手风琴风格,而其余的则保持原来的无聊格式。控制台中没有出现任何内容 - 没有错误、警告等。但是,相同的 HTML 部分确实在纯粹的客户端工作,因此我担心沙盒/语法问题。

我哪里错了?

请参阅以下来自 Google Apps 脚本项目的示例代码:

代码.gs:

myHtml.html:

编辑:奇怪的转折——如果我像这样初始化手风琴:

它莫名其妙地工作,就像(否则)预期的那样。我最好的猜测是,这与 Caja 的解析器在 jQueryUI 要求所有“#accordion”的 children() 时发回一些时髦的东西有关,但这不会干扰 .find() 结果。不过,我全都在寻求更明智的意见!

0 投票
1 回答
623 浏览

performance - 谷歌应用脚​​本替换innerHtml非常慢

我有一个谷歌应用程序脚本部署为网络应用程序。我正在尝试通过将某些 div 的 .innerHTML 替换为从服务器发回的 html 来刷新内容。

对于少量的简单 html(深度不超过 3 层,基本上每个 15 个 4x21 div 的网格)需要 25 秒。

我记录了时间戳,发现实际上是对 mydiv.innerHTML = newhtml (在客户端)的调用占用了所有时间。

这是卡哈卫生吗?重新加载整个页面大约需要 10 秒,包括我所知道的至少 4 秒的服务器时间。那么为什么这几乎慢了一个数量级呢?
谢谢。

0 投票
1 回答
923 浏览

javascript - 带有 ExtJS 4.1 的 Google Apps 脚本

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

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

结果是这样的:

刚刚注意到 Caja 验证错误与 CSS 有关,但是无法构造 Ext 对象 - 这没有区别。似乎只有 jQuery 和 jQueryUI 作为 precajoles 可用:Google Code。如果 jqGrid 至少可以工作,这可能是一个替代方案(但由于我打算使用 ExtJS,我宁愿将环境切换到更兼容的东西)。

那个 Maestro HTML 应用程序只是说:“加载 ext-all.js 失败”。没有尝试在驱动器上“本地”包含 lib - 但我猜想可能会应用同样的 JS 阉割。

嵌入第 3 方脚本的安全性通常不是坏主意 -

但是,如果安全功能不能被覆盖——它就会阻碍创新。

可能应该假设它不受支持并继续前进;对这种专有解决方案一无所有——他们可能会建立自己的互联网,但没有我。

0 投票
1 回答
455 浏览

jquery - jQuery + datepicker 在 Google Apps Script 中极度缓慢

我有以下脚本,它使用 jquery 和一个 datepicker 实现了一个滑动表单。

它的性能很糟糕,即使我让 Chrome 崩溃。我怀疑出了什么问题,但我看不到发生了什么。在 caja 操场上,它并不是很快,但更好。

也许有人看到这里发生了什么?

脚本: https ://script.google.com/a/zzapps.nl/d/1IH5NSQlmv7LG5mUWAJTsIupIA8xOo_qXYyrEgvzP_d5TvYAwl4_eJaPV/edit

已发布的网络应用程序:

https://script.google.com/macros/s/AKfycbyKFV8tDkqcZs6aDF3hVmO5f-2RPZHMnrQgZuRWMkR4x6Q1TpVu/exec

0 投票
1 回答
314 浏览

javascript - Google Caja appendChild 不更新 Firefox 中的 form.elements

我正在使用 Google Apps Script Web App 和 HtmlService 来提供内容,并且我正在尝试使用 appendChild 将输入元素动态添加到表单中。它适用于 Chrome 24 和 IE 10,但 Firefox 19.0.2 不会更新表单的元素列表。

因此,它在网页上正确显示,但在 Firefox 中,使用 appendChild 添加到表单的任何输入元素都不是 form.elements 集合的一部分。值得注意的是,仅当使用 Caja 清理 HTML 时才会出现此问题,如果我在jsfiddle中使用相同的代码,它可以正常工作。

这个问题可以在这里看到,也就是下面的代码:

根据我在该主题上的发现,Firefox 不喜欢无效的 HTML。但是,据我所知,HTML 输出是完全有效的。此外,由于它适用于 jsfiddle,我认为问题必须与 Caja 与我的 HTML 和 Firefox 交互的方式有关。

另外,最后一件事,如果我在 Firefox 中检查表单元素并双击标记面板中的表单标签,然后单击关闭(取消编辑),Firefox 然后会检测到所有元素并且一切正常。Firefox 显示为 HTML 的内容并没有改变。

提前感谢您的帮助。

0 投票
1 回答
814 浏览

google-apps-script - caja 在使用 GAS createHtmlOutput() 方法时是否修复了格式错误的 HTML?

在以下示例中,内容“Here is some more text”显然位于结束 HTML 标记之外。但是当我将脚本作为 Web 应用程序运行并查看页面源时,它位于结束标记内。这是因为 caja 正在清理格式错误的 HTML 吗?为什么以这种方式清理而不是通知我错误?

气体代码:

GAS 脚本编辑器日志输出:

0 投票
1 回答
86 浏览

css - 使用 transform:rotate 的 Htmlservice 不通过 caja?

我有一个脚本doGet,我使用该HtmlService.createTemplateFromFile服务来呈现一个 html 文件。

在 html 中,我使用如下样式表

我将其应用于 html 正文中的 div 标签。尽管 DIV 的旋转似乎没有发生,但大部分 Css 都已应用。 <div class="title">Hello</div>

我做错了什么还是Google Caja不接受真正的轮换?