6

我正在使用一个 GAS Web 应用程序,当用户执行某些操作(例如单击特定 div)时,它需要刷新其内容。

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

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

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

状态 div 更改为“重新加载...”所以我知道回调被调用,但它永远不会重新加载页面。Caja 或谷歌应用程序脚本是否禁用页面刷新?还有其他刷新页面的方法吗?

4

2 回答 2

7

您需要做的就是使用:

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

我在下面的原始答案有效,但不需要:

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

  • 将链接标签添加到您的 HTML
  • 如果您愿意,可以隐藏链接标签
  • 在脚本标签中添加客户端代码以调用链接标签上的点击事件
  • 随心所欲地运行代码

测试按钮:

<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>

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

页面导航 Web 应用程序 - Apps 脚本

于 2017-12-11T14:15:33.643 回答
4

编辑

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

原生沙盒模式

HTML 服务的更新

编辑结束

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

于 2013-03-01T23:17:55.503 回答