HTML コンテンツを取得して、Google Apps Script Web ページをリロードしなくてもページに動的に挿入できます。
空の要素を設定して新しいページ コンテンツを受け取る
<section id="ChgViewSection">
<div id="PageOne"></div>
<div id="PageTwo"></div>
<div id="PageThree"></div>
<div id="PageFour"></div>
<div id="PageFive"></div>
</section>
最初はほとんどの要素を非表示に設定し、style="display:none"
<section id="ChgViewSection">
<div id="PageOne" style="display:block"></div>
<div id="PageTwo" style="display:none"></div>
<div id="PageThree" style="display:none"></div>
<div id="PageFour" style="display:none"></div>
<div id="PageFive" style="display:none"></div>
</div>
</section>
1 つの要素を に設定しstyle="display:block"
ます。それが最初に読み込まれるページになります。
ページ、メニュー、またはタブを変更するためのユーザー インターフェイスを作成します。
<div id="tabs-nested-left">
<div class="cb" id="tabSignIn" onclick="mainStart('SignInBody', 'SignIn')">Sign In</div>
<div class="cb" id="tabInput" onclick="mainStart('InputBlock', 'InputForm')">Input</div>
<div class="cb" id="tabReg" onclick="mainStart('RegisterBlock', 'Register')">Registration</div>
<div class="cb" id="tabRegExpl" onclick="mainStart('Explain', 'Explain')">Registration Explanation</div>
<div class="cb" id="tabContact" onclick="mainStart('ContactUs', 'Contact')">Security</div>
</div>
イベント<script>
を処理するためのaを記述します。onclick
<script>
function mainStart(ElmtToGoTo, FileToGet) {
var currntShown = 'SignInBody'; //Create variable and set initial value
//Hide the currently shown element first
document.getElementById(currntShown).style.display = 'none';
//
currntShown = ElmtToGoTo;
//display the element that will be shown. No content is injected yet
document.getElementById(ElmtToGoTo).style.display = 'block';
var el = document.getElementById(ElmtToGoTo);
// If element is empty get HTML and inject
if (el.childNodes.length === 0) {
//alert("it's empty!");
//Run back end google .gs code to get new content
google.script.run.withFailureHandler(onFailure)
.withSuccessHandler(onGotHTML)
.include(FileToGet);
};
};
<script>
失敗および成功のハンドラーを HTML スクリプトに追加します。
function onGotHTML(daHTML) {
//alert("Got HTML File!");
document.getElementById(currntShown).innerHTML=daHTML;
};
function onFailure(error) {
alert("on failure ran:" + error.message);
};
サーバー側の.gs
コードを記述します。
function include(filename) {
return HtmlService.createHtmlOutputFromFile(filename)
.getContent();
};
タブをクリックすると、現在表示されている<div>
が非表示になり、次に<div>
表示する が表示されますが、まだコンテンツはありません。<div>
すでにコンテンツがある場合は、何もしません。<div>
が空の場合は、 a を実行google.script
してサーバーからコンテンツを取得します。<div>
コンテンツはクライアントに返され、成功ハンドラonGotHTML
と一緒に に注入されます。document.getElementById(currntShown).innerHTML=daHTML;
これのほとんどは DOM 操作とスタイルの変更です。しかし、それを可能にするのは、サーバーからファイル コンテンツを取得することです。<div>
要素に挿入するコンテンツとともに保存されたファイルが必要です。ユーザーがメニュー項目またはタブをクリックしたときにサーバーから HTML コンテンツを取得すると、事前にすべてをロードする必要がなくなります。inline
問題の 1 つは、CSS スタイル データが(すでにタグ内にある)場合を除き、後で追加できないことです。そのため、ページが最初に読み込まれるときにすべての CSS スタイル ファイルを読み込むか、スタイル設定を要素に入れる必要があります。ページの読み込み後に HTML を挿入し、ページを再読み込みせずに表示することはできますが、ページの読み込み後に CSS ファイルを含めて新しいスタイルを表示することはできません。
スタイリング用の CSS ファイルなど、おそらくいくつか省略したことがありますが、コードです。HTML/スタイル ; と全体的な戦略が表示されます。このような動的な単一ページ アプリケーションを構築できます。