有人可以向我解释为什么以下代码在NATIVE沙盒模式下不会发布?当它处于EMULATED模式时,它可以工作。
Code.gs
function doGet(e) {
var template = HtmlService.createTemplateFromFile('Index.html');
template.action = ScriptApp.getService().getUrl();
return template.evaluate().setSandboxMode(HtmlService.SandboxMode.NATIVE);
}
function doPost(e) {
Logger.log("TESTING!");
}
的index.html
<form action="<?= action ?>" method="post">
<label>Phone: <input type="text" name="phone"></label><br>
<label><input type="submit"></label>
</form>
答案 0 :(得分:2)
表单不会发布,因为它在caja sanatizing之后获得onsubmit='return false'
属性。如果你删除它然后按预期工作:
您可以使用jQuery删除它,例如:
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script>
var form = $('#form');
form.removeAttr('onsubmit');
</script>
经过测试和工作。完整的代码如下:
<强> Code.gs 强>
function doGet(e) {
var template = HtmlService.createTemplateFromFile('Index.html');
template.action = ScriptApp.getService().getUrl();
return template.evaluate().setSandboxMode(HtmlService.SandboxMode.NATIVE);
}
function doPost(e) {
Logger.log(e);
var template = HtmlService.createTemplateFromFile('thanks.html');
template.phone = e.parameter.phone;
return template.evaluate().setSandboxMode(HtmlService.SandboxMode.NATIVE);
}
<强>的index.html 强>
<form id='form' action="<?= action ?>" method="POST">
<label>Phone: <input type="text" name="phone"></label><br>
<label><input type="submit"></label>
</form>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script>
var form = $('#form');
form.removeAttr('onsubmit');
</script>
<强> thanks.html 强>
<div>
Thanks,
You entered <?= phone ?>!
</div>