【问题标题】:Unable to get links working in Google Apps Script when using sandbox mode of "IFRAME"使用“IFRAME”沙盒模式时无法获取在 Google Apps 脚本中工作的链接
【发布时间】: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 模式下,屏幕顶部有时会出现白色间隙。关于深度链接,是的,我想这样做,并且还有很多内部链接,其中一个页面链接到另一个页面。

标签: google-apps-script


【解决方案1】:

target="_blank" 在锚标签内?

【讨论】:

  • 我尝试了一些不同的“目标”属性,但没有一个对我很有效。 ### 我的实验结果### target="_blank" - 在 IE 11 和 Chrome 中,它可以工作,但每次都会打开一个新窗口 target="_parent" 或 target="_top" - 在 IE 11 中,没有任何反应当您单击按钮时 - 在 Chrome 中,它可以工作,但每次都会打开一个新窗口 target="_self" - 在 IE 11 和 Chrome 中,它的行为与没有目标属性 target="test" 相同 - 在 IE 11 中,当您单击按钮时没有任何反应 - 在 Chrome 中,它可以工作,但每次都会打开一个新窗口`
【解决方案2】:

Apps 脚本现在仅支持 IFRAME 模式。原生支持消失了。见here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-15
    • 2015-04-06
    • 1970-01-01
    • 1970-01-01
    • 2016-07-22
    • 1970-01-01
    相关资源
    最近更新 更多