谷歌HTML服务中缺少一些DOM功能

时间:2014-12-05 16:01:33

标签: javascript google-apps-script

我最近想重新构建我的webapp作为google webapp。当我将其粘贴为谷歌应用程序脚本时,我发现我的js库的一部分不起作用。失败的主要原因是在运行javascript时缺少某些dom函数。

我举了一个例子来说明下面的问题,

<body>
<input type='select' id='test'></input>
<p id='output'></p>
<body>

<script>
var dom = document.getElementById('test');
var outputText = '';
for(var i in dom) outputText += "<br>"+ i +": " + dom[i] + "</br>";
var out = document.getElementById('output');
out.innerHTML = outputText;
</script>

当我只使用firefox加载此页面时,我可以获得的功能之一是

checkValidity: function checkValidity() { [native code] }

但是,如果我通过google htmlService加载此页面,则缺少上述功能。

我知道google脚本是在沙盒下运行的。环境,但我仔细检查了我的应用程序运行在&#39; native&#39;模式。我想知道是否有其他配置限制谷歌脚本中dom elelemts的使用。或谷歌根本不支持所有这些?

1 个答案:

答案 0 :(得分:1)

正如@Sandy Good所提到的,HTML服务“sanitizes”将使用Google Caja在客户端运行所有代码。有两种模式,EMULATEDNATIVE,但在任何一种情况下,代码仍然处于清理状态;不同之处在于,在NATIVE模式下,如果您小心,您的代码不一定会被重写。绝对查看他发布的链接。

如果您在使用HTML服务时遇到困难,可以使用Caja Playground,它会为您提供有关已消毒内容的更详细信息。