2016-04-07 8 views
1

私はHTMLServiceを使用して、スタンドアロンのGoogle AppsスクリプトWebアプリケーションを作成しています。私は、アプリケーションのHTMLページ上のリンクをクリックし、リンク内のページに移動するコードを書くことができるようにしたい。通常のウェブページとよく似ていますが、Google Web App以外のものです。通常は、「。>私は動作しませんクリックしてくださいここで スタンドアロンのGoogle Appsスクリプトでhtmlページをナビゲートするにはどうすればよいですか?

は私がやっているものです:

Code.gs 
/* 
* Main function, sets up webapp ui. 
*/ 
function doGet() { 
    return HtmlService.createHtmlOutputFromFile('Index') 
    .setSandboxMode(HtmlService.SandboxMode.IFRAME); 
} 

function navigateTo(url) { 
    return HtmlService.createHtmlOutputFromFile(url) 
    .setSandboxMode(HtmlSerivce.SandboxMode.IFRAME); 
} 


<!DOCTYPE html> 
<html> 
    <head> 
    <base target="_top"> 
    <script> 
    function handleNavigation() { 
     //Logger.log("Hello from handleNavigation, within Index.html"); 
     google.script.run.navigateTo('EditUsers') 
     document.getElementById("test").innerHTML = "Success!"; 
    } 
    </script> 
    </head> 
    <body> 
    <h1>Home</h1> 
    This is the beginning of the Project Status Web App<br/> 
    <a href="EditUsers.html">Edit Users</a><br/><button   onclick="handleNavigation()">Button Time!</button> 
    <a id="test" href="EditProjects.html">Edit Projects</a><br/> 
    <a href="ViewProjectStatuses.html">View Project Statuses</a><br/> 
    </body> 
</html> 
+0

あなたドン'navigateTo(url)'関数で.setSandboxMode(HtmlSerivce.SandboxMode.IFRAME) 'が必要です。 'navigateTo()'の名前を 'getNewHTML()'のような一般的なものに変更します。 –

答えて

1

ページのナビゲーションシステムを設定する複数の部分を持っているでHTML場合。 『ページ』は既に存在していますサーバーから新しいコンテンツをすべて取得して再度挿入したい場合とそうでない場合があります。変更されたコンテンツがある場合は、サーバーからコンテンツを取得して新しいコンテンツを挿入することができます。更新する必要はなく、コンテンツは既に存在しているので、ページを表示して前のページを非表示にするだけで済みます。ページナビゲーションのコードでは、これらの状況をすべて確認し、したがって、

ユーザーが新しいページに移動するたびに同じコンテンツをサーバーから取得すると、そのコードははるかに簡単になります。したがって、毎回既存のコンテンツを確認する必要はありません。

"ページ"に表示するコンテンツがない場合、サーバーから新しいHTMLを受け取るにはwithSuccessHandler()が必要です。

今あなたが持っている:

google.script.run.navigateTo('EditUsers') 

あなたが必要:

google.script.run 
    .withSuccessHandler(injectNewHtml) 
    .navigateTo('EditUsers'); 

function injectNewHtml() { 
    //Code here to inject HTML into the new page 

    //Code to show page being navigated to 

    //Code to hide all other pages 

}; 

既存のコンテンツをチェックしたい場合、あなたはこのようなもの使用することができます

var numberOfChildNodes = document 
       .getElementById(elementOfPage).childNodes.length; 

if (numberOfChildNodes === 0) { 
    google.script.run 
    .withSuccessHandler(injectNewHtml) 
    .navigateTo('EditUsers'); 
}; 
関連する問題