2017-02-24 45 views
0

我想通過提供基於用戶點擊的不同HTML頁面來更改其UI的單個GAS項目。我無法弄清楚如何從腳本提供不同的HTML,替換當前的瀏覽器頁面並保留狀態。任何幫助讚賞。謝謝。從同一個腳本提供不同的HTML頁面?

回答

0

使用google.script.run您可以在html頁面上運行服務器上的任何腳本。通過communicating with the server您可以訪問PropertiesService,這使您可以在頁面之間存儲信息。我個人喜歡HTML Service createHtmlOutput(html),因爲我可以編輯html而無需編輯單獨的頁面。

我決定在這裏回答你的問題,以便我可以使用代碼部分。

問:

我其實希望避免操縱HTML和服務於存儲在項目 完全不同的HTML文件。我如何讓 頁面再次調用腳本,並用新的 內容替換本身?

我們猜測,完全替換頁面並不是真正想要的,因爲用戶會遭遇頁面刷新。但是你可以像這樣創建的div:

<style>#R01{display:none;}</style> 
<div class="replaceable" id="R01"></div> 

如果你把你所有更換的內容一樣,div的,那麼你可以通過這樣的電話從服務器請求的內容:

google.script.run 
    .withSuccessHandler(updateConversation) 
    .withFailureHandler(showStatus) 
    .getConversation(); 

,並把新內容到適當的div中,然後用另一對來更改css,並關閉舊內容和新內容。從而避免頁面刷新。不要忘記先將舊數據保存到PropertiesService中。所以我不認爲改變整個頁面是一條路,但我可能是錯的。我認爲只要更改一些內部內容就可以避免整個頁面刷新的需要。如果你想使用CSS Sprites

+0

是的,謝謝。這是關於PropertiesService的一個好主意。實際上,我希望避免操縱HTML並提供存儲在項目中的完全不同的HTML文件。 如何讓頁面再次調用腳本並用新內容替換自己? 謝謝。 – skyser5

+0

我在上面的答案部分添加了對你的問題的答案,因爲它可以使用代碼段,所以它有點更好。謝謝 – Cooper

0

改變圖像可以避開其他下載我用兩個選項:

  • 具有帶有按鈕或文本區域與平變化設置爲一個回調到一個功能的主頁服務器端並獲取新的頁面數據,然後用新頁面替換當前頁面或頁面的一部分。
  • 在URL中傳遞參數並讓服務器端doGet()解析參數並分支根據這些值加載給定頁面。

我已經有效地使用了這兩者的組合。基本上我有一個div有我的「菜單」和一個div,這是要更換的部分。我的菜單發生變化,然後將數據發送回服務器以獲取動態主體。 HTML返回,然後我replace using innerHTML

在相同的代碼中,我提供了pass menu values via the published URL的功能。這使我可以直接轉到一些值,如果我這樣選擇,因爲我有一個Google站點,我們將腳本嵌入到頁面中,並且菜單選項可能是特定於該頁面的。它允許我們使用iFrame來顯示Web應用程序並直接進入相關界面。

相關問題