6

我一直在寻找将 Meteor 与 iframe 一起使用的示例,但毫无结果。(请注意,我必须使用 iframe 而不是 DIV,因为内容最终会到达那里)。我都试过了:

<body>
  {{> hello}}
</body>

<template name="hello">
  <h1>Hello World!</h1>
  {{greeting}}
  <input type="button" value="Click to see what you typed" />
  <br>
  <iframe id="compose" src={{> iframe-content}} height=600></iframe>
</template>

<template name="iframe-content">
  <body>
    <div contenteditable="true">
      Edit me
    </div> 
  </body>
</template>

这会递归加载,不断创建子 Iframe。

我也试过

<iframe id="compose" src="content.html" height=600></iframe>

但是 Meteor 将多个 HTML 文件组合在一起,这也会导致 iframe 失败。

到目前为止,唯一有效的是 SRCDOC 而不是 SRC,但是像 FF 这样的多个浏览器并不能很好地支持它。

那么,在 Meteor 中使用 iframe 的技巧是什么,最好是在模板中,而不是严格通过代码?

4

3 回答 3

7

您想要“公共”文件夹。Meteor 将内容单独留在该文件夹中,如下所述:http: //docs.meteor.com/#/full/structuringyourapp

将“content.html”移动到项目/应用程序根目录下名为“public”的文件夹中,并在 html 中像这样引用它:

<head>
  <title>iframe</title>
</head>

<body>
  {{> hello}}
</body>

<template name="hello">
  <h1>Hello World!</h1>
  {{greeting}}
  <input type="button" value="Click" />

  <iframe src="hello.html"></iframe>

</template>

为了让其他读者清楚,Meteor 对 iframe 没有问题。问题在于 iframe 引用的“content.html”文件的位置。

于 2013-01-11T22:33:12.677 回答
1

我不明白你的第一个代码示例:

<iframe id="compose" src={{> iframe-content}} height=600></iframe>

据我所知,这不是 iframe 的工作方式。你必须在 src 属性中指定一个 url,你不能只把实际的 HTML 放在那里。所以这行不通。

至于第二个例子:

<iframe id="compose" src="content.html" height=600></iframe>

content.html如果您没有指定该路径存在,您希望 Meteor 到哪里?由于 Meteor 默认不设置路由,所以 /content.html 处没有资源。所以你必须添加 Meteor Router 包或一些类似的路由机制,然后告诉 Meteor 当被要求提供 /content.html 时,它应该只返回一些模板的内容。具有挑战性的部分是弄清楚如何让 Meteor 返回“真实”的 HTML,而不是通常提供的 Meteor 包装的实时 HTML 结构。

于 2013-01-10T23:45:53.293 回答
0

我最近一直在玩 iframe(主要是为了封装一些为应用程序 webviews 制作的页面),如果你将这些 html 文件放在/public文件夹中并在 iframe src 中写入绝对 url /file.html,那么它就可以工作。

于 2016-06-10T08:46:09.003 回答