Javascript 在web应用程序中重新加载Google应用程序脚本location.reload
我使用的GAS web应用程序需要在用户执行某些操作(如单击特定div)时刷新其内容 在客户端,我有一个从onclick调用的脚本Javascript 在web应用程序中重新加载Google应用程序脚本location.reload,javascript,html,google-apps-script,reload,window.location,Javascript,Html,Google Apps Script,Reload,Window.location,我使用的GAS web应用程序需要在用户执行某些操作(如单击特定div)时刷新其内容 在客户端,我有一个从onclick调用的脚本 google.script.run.withSuccessHandler(refreshCallback).myServersideFunction(); function refreshCallback(roomsPlus) { var statusDiv = document.getElementById("status"); statusDi
google.script.run.withSuccessHandler(refreshCallback).myServersideFunction();
function refreshCallback(roomsPlus) {
var statusDiv = document.getElementById("status");
statusDiv.innerHTML = "Reloading...";
window.location.reload(true);
};
status div变为“Reloading…”,因此我知道回调被调用,但它从不重新加载页面。Caja或google应用程序脚本是否禁用页面刷新?是否有其他方法刷新页面?编辑
Caja于2016年7月16日从Web应用程序HtmlService中删除
编辑结束
不幸的是,HtmlService使用的Caja清理引擎限制了对窗口对象的访问,从而阻止您通过编程方式重新加载页面。这是已知的服务限制,我们正在努力更好地记录它。您只需使用:
window.open("https://script.google.com/macros/s/web_app_ID/dev",'_top');
下面是我的原始答案,但不需要:
在应用程序脚本Web应用程序中,有一个用于重新加载/刷新页面的编程“变通方法”。它基于html链接标记重新加载页面的能力,以及JavaScript调用该标记上的单击事件的能力。如果需要,可以隐藏链接
- 在HTML中添加链接标记
- 如果愿意,请隐藏链接标记
- 在脚本标记中添加客户端代码,以调用链接标记上的单击事件
- 按照您的意愿运行代码
触发链接标签
链接:
脚本:
window.reloadTheWebApp=函数(){
log('reloadthewebapprun');
var linkTag=document.getElementById('testLink');
linkTag.click();
}
最好实现一个简单的页面导航系统:
那么,如何解决这个问题呢?使用GAS页面刷新?Caja现在不再用于应用程序脚本Web应用程序。我已经实现了此解决方案,如果我通过它的exec链接进行测试,它可以完美地工作,但是如果它嵌入到Google Pages网站中,它就不会进入重新加载部分。为什么?对不起,我不知道。
<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>