【发布时间】:2015-02-07 14:39:32
【问题描述】:
在 Google Apps 脚本中,下面的代码在默认沙盒模式下适用于我,但是当我将沙盒模式更改为 IFRAME 时,代码不起作用。在 IE11 中,单击第一个按钮后,我得到一个空白页面。在 Chrome 中,第一个按钮有效,但单击后续按钮会显示一个空白页面。
以下代码取自this post
代码.gs
/**
* Get the URL for the Google Apps Script running as a WebApp.
*/
function getScriptUrl() {
var url = ScriptApp.getService().getUrl();
return url;
}
/**
* Get "home page", or a requested page.
* Expects a 'page' parameter in querystring.
*
* @param {event} e Event passed to doGet, with querystring
* @returns {String/html} Html to be served
*/
function doGet(e) {
Logger.log( Utilities.jsonStringify(e) );
if (!e.parameter.page) {
// When no specific page requested, return "home page"
return HtmlService.createTemplateFromFile('my1').evaluate().setSandboxMode(HtmlService.SandboxMode.IFRAME);
}
// else, use page parameter to pick an html file from the script
return HtmlService.createTemplateFromFile(e.parameter['page']).evaluate().setSandboxMode(HtmlService.SandboxMode.IFRAME);
}
my1.html
<html>
<body>
<h1>Source = my1.html</h1>
<?var url = getScriptUrl();?><a href='<?=url?>?page=my2'> <input type='button' name='button' value='my2.html'></a>
</body>
</html>
my2.html
<html>
<body>
<h1>Source = my2.html</h1>
<?var url = getScriptUrl();?><a href='<?=url?>?page=my1'> <input type='button' name='button' value='my1.html'></a>
</body>
</html>
【问题讨论】:
-
您还需要
IFRAME做其他事情吗?如果没有,请使用NATIVE。如果您想要一个只加载一次 URL 并导航到其他页面的 SPA(单页应用程序),只要您预先提供所有 CSS,您就可以“有点”这样做。如果您对如何根据需要获取 HTML 内容感兴趣,所以它不是全部预先加载的,有一种方法可以做到这一点。 -
您是否正在尝试实现“深度链接”?能够共享指向应用程序中特定页面的链接,并让应用程序直接转到该页面。
-
我想使用 IFRAME,因为我有深色背景,但在 NATIVE 模式下,屏幕顶部有时会出现白色间隙。关于深度链接,是的,我想这样做,并且还有很多内部链接,其中一个页面链接到另一个页面。