2013-10-11 11 views
1

任何人都可以向我解釋爲什麼在NATIVE沙盒模式下下面的代碼不會發布?當它處於EMULATED模式時,它可以工作。在NATIVE模式下,表單不會發布

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

什麼是控制檯OU輸入鉻? –

+0

什麼都沒有......空:(你可以在Chrome中複製它嗎? – s2000coder

回答

2

的形式將不會發布,因爲它得到卡哈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> 
+0

爲什麼它會在NATIVE模式和非EMULATED模式下獲得onsubmit ='return false'屬性?任何想法? – s2000coder

+0

實際上不知道嗎? 。 – Kalua

+0

還是不知道?我很驚訝沒有找到任何解釋... –