我试图通过谷歌应用程序脚本执行图像预览功能。
这是我的代码:
code.gs
function doGet(e) {
return HtmlService.createTemplateFromFile('form')
.evaluate() // evaluate MUST come before setting the NATIVE mode
.setTitle('Details')
.setSandboxMode(HtmlService.SandboxMode.NATIVE);
}
form.html
<!DOCTYPE html>
<html>
<head>
<script>
var loadFile = function(event) {
var reader = new FileReader();
reader.onload = function(){
var output = document.getElementById('preview');
output.src = reader.result;
};
reader.readAsDataURL(event.target.files[0]);
};
</script>
</head>
<body>
<input type='file' id="imgInp" onchange="loadFile(event)" />
<img id="preview" src="#" alt="your image" />
</body>
</html>
当我部署此代码时,它会给我以下错误:
在Safari中:undefined is not a constructor (evaluating 'new FileReader()')
在Chrome中:
Uncaught TypeError: FileReader is not a function
我怀疑FileReader
解释器(?)可能无法理解Google App Script
,但我发现this SO question它似乎存在并被使用。
我尝试使用IFRAME
模式而不是NATIVE
,它似乎有效。虽然很奇怪。我希望通过NATIVE
答案 0 :(得分:2)
NATIVE模式已被折旧,并且明年任何明确调用它的脚本都将被默认为IFRAME模式。因此,我建议您使用IFRAME,因为它适合您。
https://developers.google.com/apps-script/sunset
由于代码似乎在带有"use strict"
标记的常规javascript中工作正常,我猜问题是NATIVE模式实现本身,但如果是这样的话,现在不太可能修复。