Google应用程序脚本location.reload在Web应用程序中

时间:2013-02-03 16:14:34

标签: javascript html google-apps-script reload window.location

我正在使用GAS网络应用,当用户执行某些操作(例如点击特定的div)时,需要刷新其内容。

在客户端,我有这个脚本从onclick

调用
google.script.run.withSuccessHandler(refreshCallback).myServersideFunction();

function refreshCallback(roomsPlus) {
    var statusDiv = document.getElementById("status");
    statusDiv.innerHTML = "Reloading...";
    window.location.reload(true);
};

状态div变为“Reloading ...”所以我知道回调被调用,但它从不重新加载页面。 Caja或谷歌应用脚​​本是否会禁用页面刷新?还有另一种刷新页面的方法吗?

2 个答案:

答案 0 :(得分:3)

修改

Caja于2016年7月16日从Web App HtmlService中删除。

Native Sandbox Mode

An Update to HTML Service

编辑结束

不幸的是,HtmlService使用的Caja清理引擎限制了对窗口对象的访问,阻止您以编程方式重新加载页面。这是服务的已知限制,我们正在努力更好地记录它。

答案 1 :(得分:3)

您需要做的就是使用:

window.open("https://script.google.com/macros/s/web_app_ID/dev",'_top');

我的原始答案有效,但不是必需的:

在Apps脚本Web应用程序中有一个程序化的“解决方法”来重新加载/刷新页面。它基于html链接标记重新加载页面的能力,以及JavaScript调用该标记上的click事件的能力。如果需要,您可以隐藏链接。

  • 为HTML添加链接标记
  • 如果您愿意,请隐藏链接标记
  • 在脚本标记中添加客户端代码以调用链接标记上的click事件
  • 运行您想要的代码

测试按钮:

<button onmouseup="reloadTheWebApp()">Trigger the Link Tag</button>

链接:

<a id="testLink" style="display:none" 
   href="https://script.google.com/macros/s/script_ID/exec">Reload the Web App</a>

脚本:

<script>

  window.reloadTheWebApp = function() {
    console.log('reloadTheWebApp ran');

    var linkTag = document.getElementById('testLink');

    linkTag.click();
  }

</script>

最好实现一个简单的页面导航系统:

Page Navigation Web App - Apps Script