1

我想嵌入一个没有页眉和页脚的谷歌电子表格。这篇文章展示了诀窍,但没有说明如何应用它。我试过这个,但它不起作用:

<iframe id="embeddedthing" width='500' height='300' frameborder='0' src='https://docs.google.com/spreadsheet/pub?key=<DocId>&single=true&gid=12&output=html&widget=false&gridlines=false'></iframe>
<script type="text/javascript">
  var f = function(id) {document.getElementById(id).style.display = "none";};
  f("header");
  f("footer");
</script>

然后我想我应该将它应用到 iframe 中加载的文档,所以我尝试使用 访问它document.getElementById('FrameId').contentWindow.document,但是浏览器显示“不安全的 JavaScript 尝试访问框架”并且不允许我继续。

运行该 JavaScript 函数的正确方法是什么?

4

2 回答 2

6

从 iframe 中的共享 Google 工作表中删除页眉和页脚的最简单方法是指定工作表和要显示的范围。
使用以下语法,工作表看起来干净整洁,除了顶部和左侧边缘的灰色细边框:

src="https://docs.google.com/spreadsheet/pub?key=<DocID>&gid=<SheetID>&gridlines=false&range=A1:Z100"

如果没有该range参数,行为会受到widget=true在顶部显示标题行或widget=false显示页眉、页脚和指向其他工作表的链接的影响。
如果指定range大于实际工作表尺寸,则使用整个工作表。所以range=A1:Z100将涵盖大多数小桌子的情况。

创建两个相邻的 iframe 允许执行类似于冻结的列或行标题的操作。
下面是一个页面示例,该页面使用此技术显示 2 个固定列,其中标题位于左侧,可滚动区域位于右侧:

<table border='1'>
  <tr>
    <td>
      <iframe width="103" height="187" frameborder="0" src="https://docs.google.com/spreadsheet/pub?key=0AqEyi7du69LQdHRJXzViMlhEdHVYY2E4X1hnZ21EQ2c&gid=29&gridlines=false&range=A1:B999"></iframe>
    </td>
    <td>
      <iframe width="600" height="187" frameborder="0" src="https://docs.google.com/spreadsheet/pub?key=0AqEyi7du69LQdHRJXzViMlhEdHVYY2E4X1hnZ21EQ2c&gid=29&gridlines=false&range=C1:CC999"></iframe>
    </td>
  </tr>
</table>

是使用这种技术的网站。

编辑

谷歌改变了一些东西,我的网站突然坏了。

这里建议的解决方案是添加&widget=false&chrome=false.

于 2013-02-03T20:00:20.510 回答
0

因为 JS 限制了对框架的访问,所以您需要以某种方式获取电子表格的 HTML 并从页面中删除页眉和页脚。

您可以使用隐藏的iframe( display: none;) 来容纳电子表格,然后再iframe加载一个页面,该页面使用此方法获取电子表格的 HTML(需要 jQuery),然后删除页眉和页脚。为此,您可以获取 HTML,将其解析为 DOM 结构,使用 f() 代码添加script元素,然后使用data:URL 拉出页面。

您可以使用base元素来保留文件的链接;将电子表格的原始路径(但不是文件名)添加到base's(href如果存在);否则<base href="www.google.com/path/to/spreadsheet/without/filename/" />head. 您可以在 hidden 上使用正则表达式获取iframe路径src

可能有点笨拙,当然可以使用改进......但它(希望)有效!

请注意,这是未经测试且基于研究的。

于 2013-01-17T03:13:57.977 回答