问题标签 [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.
html - 如何让 Google Apps 脚本 html 服务使用 :after 显示数据属性?
我有一个使用 html 服务的简单应用程序脚本,我需要 :after 伪选择器。
将问题归结为一行代码,我有
每个 jsfiddle,预期的输出将是“现在你看到我现在你没有”,但我只得到“现在你看到我”
如果我按预期删除 :after I get Now you see me。
FWIW 我正在使用 .setSandboxMode(HtmlService.SandboxMode.NATIVE)
谁能告诉我我做错了什么?
google-apps-script - 是否可以使用 HtmlService.createHtmlOutput 包含客户端脚本,还是必须使用替代方法?
我最近开始使用 Google Docs 电子表格,并开始尝试在表格中编写脚本。在一个特定的工作表中,我想向用户显示一个自定义对话框,我已经设法做到了。
现在,我想让对话框中的一些表格行可点击。我编写了一些应该完成这项工作的代码,但 Caja 似乎正在删除我编写的代码。
代码的简化版本(仍然存在问题):
我在显示的对话框中得到的是:
我认为 Caja 出于某种原因正在剥离代码,但我似乎无法在任何地方找到任何文档或示例,说明如何正确包含脚本以Code.gs
使它们在 Caja 清理后保持完整。
我假设其他人已经遇到了这个问题,我希望有人能分享一个解决方案。
TLDR 版本:
如何在由创建的对话框中包含 JavaScript HtmlService.createHtmlOutput
?
gwt - Google Drive 中的 Caja 安全性,GWT 不兼容?
我想将 aGWT
作为侧边栏嵌入到 Google 文档中。对于一个简单的jquery
网页,一切正常,但是当我嵌入最小的 GWT 应用程序时,它不会出现。我将我的 GWT 应用程序减少到最低限度:
我像这样包含这个 GWT 应用程序:
在代码.gs
在 sidebar.html 中
如前所述,在 HTML 文件中包含 jquery 并使用 jquery 语句调用远程脚本在这种方法中效果很好。
现在在 Google 文档中运行 web 应用程序,javascript 和 HTML 是 CAJA-sanitized,我从我在这里读到的理解:https ://developers.google.com/apps-script/guides/html/restrictions 。然后有一个SANDBOX mode
你可以设置为 NATIVE or EMULATED
。我都试过了。
您可以使用 setSandboxMode() 方法在 Caja 的两个版本之间进行选择: NATIVE 模式比 EMULATED 模式施加的限制更少,并且通常运行得更快。相比之下,EMULATED 模式更有可能在不支持 ECMAScript 5 严格模式的旧浏览器中工作,尤其是 Internet Explorer 9。(非常旧的浏览器,包括 Internet Explorer 8 及更低版本,通常与 HTML 服务不兼容。)
无论如何,什么都没有出现,从下面的日志中,错误是:
对象 [对象对象] 没有“替换”方法
如果我可以重用我的应用程序小部件的一部分来嵌入到侧边栏,那就太好了......
有人可以阐明一下吗?
谢谢
作为参考,控制台输出:
沙盒模式:NATIVE 904833574-maestro_htmlapp_bin_maestro_htmlapp.js?lib=MK7wi1l9-fBV4ffZJJ9h74zcqOPkxWgv_:192
对象 [对象对象] 没有“替换”方法 904833574-maestro_htmlapp_bin_maestro_htmlapp.js?lib=MK7wi1l9-fBV4ffZJJ9h74zcqOPkxWgv_:66
google-apps-script - 从 AppsScript 和 CAJA 提供页面时如何加快 Android WebView 的加载?
我有一个 AppsScript UI,它通过我在 Chrome 中的 Windows 笔记本电脑在 2 到 3 秒内加载。当尝试在 WebView 中通过 Android 应用加载相同的 UI 时,加载需要 27 秒。使用运行 Android KitKat 4.4(SDK 版本 19)的新 (2013) Nexus 7。
我不知道如何加快加载速度。我正在遵循 AppsScript 网站上发布的所有最佳实践(使用 CacheService 等),并且可以认为问题一定是 Android App/Webview?
在 Android 中,初始页面加载需要 13 - 14 秒,然后我有一个加载屏幕,而内容脚本再检索数据 13 - 14 秒。在我的笔记本电脑上,初始页面加载需要 1 秒,然后有一个加载屏幕,而内容脚本再检索数据 1-2 秒。
我使用了 Chrome 远程调试工具,可以确定检索到的资源数量没有差异。我没有关于如何加快加载速度的想法。任何建议表示赞赏!
javascript - 如何从 Google Apps Script HTML Google Site Gadget 中的 JavaScript 打开 URL 链接
我在 Google Apps 脚本中编写了一个 HTML(不是 UI)小工具,以嵌入到 Google 站点中。该小工具会显示一个下拉菜单,其中包含包含 URL/显示名称值/文本对的选项。
我想在小工具中放置一个按钮,该按钮会打开一个与所选 URL 对应的新窗口。但是,基本上,我在执行时收到“对象不包含‘打开’方法”错误
有没有解决的办法?我可以(并且已经)创建了带有成功打开其他窗口的锚标记的小工具,但似乎不允许从 javascript 执行相同的操作。
任何实现功能的东西都很好。基于 jQuery 的解决方案会很棒。
谢谢。
javascript - 使用 Google HtmlService 服务时输入模式属性不起作用
我真的很想对使用 Google Apps HtmlService 提供的一些简单表单使用本机 html5 验证。
在 jsfiddle 中,表单按预期工作:不匹配六位数字的输入会导致特定于浏览器的验证提示。但是,使用 HtmlService 从 Google Apps 提供的代码完全相同:
导致表单正确显示,但没有对输入进行验证。可以在这里测试。我也尝试过使用脚本设置模式属性;这也失败了。
在每种情况下使用的浏览器都是相同的,jsfiddle 上的肯定结果证明浏览器正确支持模式属性。
任何帮助将不胜感激!
google-apps-script - 如何让 Caja 保留脚本标签内的模板文本?
我试图看看是否可以使用ICanHaz或Handlebars来构建我的 Google Docs Add-on 的侧边栏。然而,事实证明 Caja 正在从我的脚本标签中剥离实际的 HTML。有什么办法可以防止这种情况发生吗?
假设我的 Handlebars 模板是这样的:
然后目前,在运行时是这样的:
因此,即使我可以使用 查找它$('#user").html()
,它也只会给我一个空模板。有没有办法阻止 Caja 这样做?
javascript - Google Caja:示例 html4 def 文件?
我正在尝试使用 Caja 的 JSHtmlSanitizer来实现这个介绍教程来清理 HTML。
我在html-sanitizer.jsreference is not defined
的第 1056 行收到错误,因为该变量未定义。我相信这是一个定义文件。我在哪里可以得到这个定义文件的样本?我想我发现了一个可以追溯到 2008 年的非常旧的 def 文件,它不再在最新版本的 repo 中。html4
javascript - parseXML 在 Google Apps 脚本中返回 INVALID XML
在 Google Apps Script(不是 Google Script 而是 Caja-ed Javascript)中的 Javascript 文件中,我想将字符串解析为 XML 文档。在 GAS 之外,这有效:
但在 GS 文件中:
parseXML 声称我的 xml 无效。我认为这对于 GAS 对我的 JavaScript(Caja?)所做的任何预处理都很奇怪。有解决办法吗?我试过 Jquery 1.11 和 1.9.0