Saya memiliki aplikasi besar yang ingin saya konversi dari kotak pasir NATIVE ke IFRAME karena NATIVE sudah tidak digunakan lagi. Alur umum aplikasi adalah sebagai berikut: Pengguna mengisi formulir di halaman awal dan menekan tombol Mulai. Halaman awal kemudian disembunyikan, dan berdasarkan nilai dari halaman pertama, pengguna kemudian diperlihatkan halaman baru. Masalah saya saat menggunakan IFRAME adalah halaman baru tidak pernah ditampilkan. Ini berfungsi seperti yang diharapkan dalam mode ASLI. Saya telah membuat skrip sederhana yang menunjukkan masalahnya. Tolong bantu saya memahami apa yang saya lupa atau lakukan salah.
Kode.gs
function doGet() {
Logger.log('enter doget');
var html = HtmlService.createTemplateFromFile('BeginHeader').evaluate()
.setSandboxMode(HtmlService.SandboxMode.IFRAME);
return html;
}
function include(filename) {
Logger.log('enter include');
Logger.log(filename);
var html = HtmlService.createHtmlOutputFromFile(filename).getContent();
Logger.log(html);
return html;
}
Javascript.html
<script
src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js">
</script>
<script
src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.10.3/jquery-ui.min.js">
</script>
<script
src="https://apis.google.com/js/api.js?onload=onApiLoad">
</script>
<script>
function showForm(hdr) {
console.log('enter showform');
console.log(hdr);
console.log('hiding first page');
document.getElementById('beginDiv').style.display = 'none';
var el = document.getElementById('recordDiv');
el.innerHTML = hdr;
console.log('showing new page');
el.style.display = 'block';
}
function oops(error) {
console.log('entered oops');
alert(error.message);
}
</script>
<script>
$(document).ready(function() {
console.log('begin ready');
$("#beginForm").submit(function() {
console.log('enter begin submit');
//console.log('hiding first page');
//document.getElementById('beginDiv').style.display = 'none';
console.log('including page 2');
google.script.run
.withSuccessHandler(showForm)
.withFailureHandler(oops)
.include('Page2');
});
});
</script>
BeginHeader.html
<!DOCTYPE html>
<html>
<head>
<base target="_top">
</head>
<body>
<div id="beginDiv" style="display:block">
<p>Click on Begin. </p>
<form id="beginForm">
<input type="submit" value="Begin">
</form>
</div>
<!-- results of content being filled in -->
<div id="recordDiv"></div>
<?!= include('Javascript'); ?>
</body>
</html>
Halaman2.html
<!DOCTYPE html>
<html>
<body>
<p> This is page 2. </p>
</body>
</html>