per*_*ual 6 html javascript reload window.location google-apps-script
我使用的是GAS网络应用,当用户执行某些操作(例如点击特定的div)时,该应用需要刷新其内容。
在客户端,我有一个从onclick调用的脚本
google.script.run.withSuccessHandler(refreshCallback).myServersideFunction();
function refreshCallback(roomsPlus) {
var statusDiv = document.getElementById("status");
statusDiv.innerHTML = "Reloading...";
window.location.reload(true);
};
Run Code Online (Sandbox Code Playgroud)
状态div更改为“正在重新加载...”,因此我知道回调已被调用,但随后它从未重新加载页面。Caja或google apps脚本会禁用页面刷新吗?还有另一种刷新页面的方法吗?
您需要做的就是使用:
window.open("https://script.google.com/macros/s/web_app_ID/dev",'_top');
Run Code Online (Sandbox Code Playgroud)
我在下面的原始答案有效,但不需要:
有一个程序化的“解决方法”来重新加载/刷新 Apps 脚本 Web 应用程序中的页面。它基于 html 链接标签重新加载页面的能力,以及 JavaScript 调用该标签上的点击事件的能力。如果需要,您可以隐藏链接。
<button onmouseup="reloadTheWebApp()">Trigger the Link Tag</button>
Run Code Online (Sandbox Code Playgroud)
<a id="testLink" style="display:none"
href="https://script.google.com/macros/s/script_ID/exec">Reload the Web App</a>
Run Code Online (Sandbox Code Playgroud)
<script>
window.reloadTheWebApp = function() {
console.log('reloadTheWebApp ran');
var linkTag = document.getElementById('testLink');
linkTag.click();
}
</script>
Run Code Online (Sandbox Code Playgroud)
实现一个简单的页面导航系统可能更可取:
Caja 已于 2016 年 7 月 16 日从 Web App HtmlService 中删除。
编辑结束
不幸的是,HtmlService 使用的 Caja 清理引擎限制了对窗口对象的访问,从而阻止您以编程方式重新加载页面。这是该服务的已知限制,我们正在努力更好地记录它。