2017-02-24 43 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应用程序并直接进入相关界面。

相关问题