【问题标题】:Embedding an entire html page into a Vue.js template将整个 html 页面嵌入到 Vue.js 模板中
【发布时间】:2020-08-03 10:49:28
【问题描述】:

首先,请原谅我的英语,我正在使用翻译。

我有一个 Vue.js 项目,它具有典型的反应式框架的单页路径结构 (SPA),我在其中创建导航和页脚以及在对应路径调用<router-view></router-view>

发生的情况是,我需要在项目中引入一个带有外部代码的页面,我无法与 Vue.js 混合,因为它有太多的 css,太不兼容和太广泛,无法使其协同工作。所以我想看看你是否可以在模板本身中输入对整个外部 html 页面的调用,这通常是用 iframe 完成的。

他们提供的第一件事是带有简单标签的 iframe 本身:

<template>
<iframe src="htmlexterno.html"></iframe>
</template>

但它不起作用,而且从我所看到的情况来看,Iframe 似乎与 Vue.js 不兼容

然后在网上搜索我找到了这段代码:

<template>
<div v-html="varhtml"></div>
<template>
<script>
export default {
data: {
    varhtml: '<p>Loading...</p>'
},

ready() {
    this.$http.get('htmlexterno.html').then(response => {
        this.varhtml = response.data;
    });
}
}
</script>

但这对我也不起作用。

然后感谢这个问题的答案的帮助,我得到了它来加载互联网网址,但是 htmlexterno.html 是一个本地项目,对我不起作用。

我做的最后一个是这个,但它只有在我输入一个互联网网址(不是本地)时才有效:

<template>
    <iframe :src="ruta"></iframe>
</template>
<script>
export default {
    data: () => ({
        ruta: 'htmlexterno.html'
    })
}
</script>


如果有人可以帮助我,我将不胜感激。

【问题讨论】:

  • 您是否尝试在data 中设置varhtml 来绑定它?
  • 是的,但不是这样。
  • “iframe 与 Vue.js 不兼容” 这是谁告诉你的? Vue 与所有 HTML、CSS 和 JS 技术兼容,并且完全不可知论(它不关心它呈现的内容)。它不在乎里面是什么,也不在乎外面是什么。它甚至可以包括 React、Angular 或任何其他框架,或者它可以存在于其中任何一个框架中。 Vue 可以渲染一个按钮以及具有数千个页面的应用程序。告诉你 Vue 不兼容 iframe 的人对 Vue 了解不多。

标签: html vue.js


【解决方案1】:

&lt;iframe src="htmlexterno.html"&gt;&lt;/iframe&gt;

我注意到您正在尝试加载本地文件 iframe。尝试替换该文件的 URL 或改为阅读 Static Assets Handling

P/S 加载 iframe 是基本的 HTML 内容,因此 Vue 肯定不止于此。

【讨论】:

    【解决方案2】:

    告诉你 Vue 与 &lt;iframe&gt;s 不兼容的人对 Vue 了解不多。这是一个简单的例子:

    new Vue({
      el: '#app',
      data: () => ({
        source: 'https://en.wikipedia.org/wiki/Main_Page'
      })
    })
    #app, #app iframe {
      height: 100vh;
      width: 100vw;
      border: none;
      box-sizing: border-box;
    }
    body {
      margin: 0;
    }
    <script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>
    <div id="app">
      <iframe :src="source"></iframe>
    </div>

    【讨论】:

    • 如果我使用互联网网站 (www.wikipedia.com),它可以工作,但在我的情况下,它是一个本地网站 (htmlexterno.html),它不是这样工作的
    • 您需要将该网站配置为允许嵌入&lt;iframe&gt;如果您拥有它。请注意,您可以限制允许从选定的域列表中嵌入。这样做是为了让其他人无法在他们自己的 URL 下提供您的内容。您只能对您拥有并设置为允许嵌入的域或由其所有者设置允许嵌入的域执行此操作。但这与 Vue 完全无关。这是一个网络安全标准,在纯 HTML 中使用 &lt;iframe&gt;s 也会遇到同样的问题。
    • 请参阅thisthis,了解如何允许嵌入。在您询问是否可以绕过不允许的嵌入内容之前:基本上,不。但是,如果您自己开发了这样的方法,如果有人发现了您的方法并且可以链接回您,那么您将承担窃取该内容的责任。这是法律上的等价物。
    猜你喜欢
    • 2019-04-16
    • 1970-01-01
    • 2013-11-30
    • 1970-01-01
    • 2013-09-15
    • 2018-05-22
    • 2014-07-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多