VUE页面中加载外部HTML的示例代码


Posted in Javascript onSeptember 20, 2017

前后端分离,后端提供了接口。但有一部分数据,比较产品说明文件,是存在其他的服务器上的。

所以,在页面显示的时候,如果以页面内嵌的形式显示这个说明文件。需要搞点事情以达到想要的效果。

不同以往的IFRAME标签,那种方式比较Low,另外有其他的一些BUG。

本文思路是把HTML请求以来,以v-html的形式加载到页面内部。注册全局组件【v-html-panel】

1.HtmlPanel.vue文件

<template>
 <div>
  <mu-circular-progress :size="40" v-if="loading"/>
  <div v-html="html"></div>
 </div>
</template>
<style>

</style>
<script>
 export default{
  // 使用时请使用 :url.sync=""传值
  props: {
   url: {
    required: true
   }
  },
  data () {
   return {
    loading: false,
    html: ''
   }
  },
  watch: {
   url (value) {
    this.load(value)
   }
  },
  mounted () {
   this.load(this.url)
  },
  methods: {
   load (url) {
    if (url && url.length > 0) {
     // 加载中
     this.loading = true
     let param = {
      accept: 'text/html, text/plain'
     }
     this.$http.get(url, param).then((response) => {
      this.loading = false
      // 处理HTML显示
      this.html = response.data
     }).catch(() => {
      this.loading = false
      this.html = '加载失败'
     })
    }
   }
  }
 }
</script>

htmlViewSample.vue

<template>
 <div>
  <v-html-panel :url.asyc="url1"></v-html-panel>
  <v-html-panel :url.asyc="url2"></v-html-panel>
 </div>
</template>
<style scoped>
 div{color:red}
</style>
<script>
 export default{
  data () {
   return {
    url1: '',
    url2: ''
   }
  },
  mounted () {
   this.url1 = 'http://file.xxx.com/group1/M00/0C/F5/xxxxxxxx.html'
   this.url2 = 'http://file.xxx.com/group1/M00/0D/3B/yyyyyyy.html'
  },
  methods: {
  }
 }
</script>

上一张效果图

VUE页面中加载外部HTML的示例代码

注意事项:

  • 直接使用axios处理的GET请求,需要处理跨域
  • 外部的css样式会作用到显示的html
  • 同时加载的外部html里的script也可能会执行,需要按需处理下
  • 外部HTML文件内部的相对路径将不会被自动识别,绝对路径可以

NGINX跨域配置:

(Origin如果使用*的话,好像会出错,这里直接使用请求源的地址,如果担心安全性的话,可以用if+正则条件判断下)

location / {
  add_header Access-Control-Allow-Origin $http_origin;
  add_header Access-Control-Allow-Credentials true;
  add_header Access-Control-Allow-Methods GET;

  access_log /data/nginx/logs/fdfs_https.log main;

  ...
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
javascript同步Import,同步调用外部js的方法
Jul 08 Javascript
利用ajaxfileupload插件实现文件上传无刷新的具体方法
Jun 08 Javascript
js window.open弹出新的网页窗口
Jan 16 Javascript
收集json解析的四种方法分享
Jan 17 Javascript
解决用jquery load加载页面到div时,不执行页面js的问题
Feb 22 Javascript
js 获取浏览器版本以此来调整CSS的样式
Jun 03 Javascript
JavaScript面向对象的实现方法小结
Apr 14 Javascript
javascript实现网页字符定位的方法
Jul 14 Javascript
easyui validatebox验证
Apr 29 Javascript
使用Require.js封装原生js轮播图的实现代码
Jun 15 Javascript
React精髓!一篇全概括小结(急速)
May 23 Javascript
JS判断数组四种实现方法详解
Jun 29 Javascript
JavaScript实现焦点进入文本框内关闭输入法的核心代码
Sep 20 #Javascript
微信小程序 配置顶部导航条标题颜色的实现方法
Sep 20 #Javascript
JavaScript实现兼容IE6的收起折叠与展开效果实例
Sep 20 #Javascript
用vue构建多页面应用的示例代码
Sep 20 #Javascript
微信小程序request请求后台接口php的实例详解
Sep 20 #Javascript
微信小程序 input表单与redio及下拉列表的使用实例
Sep 20 #Javascript
JavaScript实现图片本地预览功能【不用上传至服务器】
Sep 20 #Javascript
You might like
PHP实现Socket服务器的代码
2008/04/03 PHP
PHP文字转图片功能原理与实现方法分析
2017/08/31 PHP
thinkPHP5.1框架路由::get、post请求简单用法示例
2019/05/06 PHP
深入学习微信网址链接解封的防封原理visit_type
2019/08/15 PHP
JavaScript 事件查询综合
2009/07/13 Javascript
jquery对象和DOM对象的区别介绍
2013/08/09 Javascript
使用javascript实现Iframe自适应高度
2014/12/24 Javascript
onclick和onblur冲突问题的快速解决方法
2016/04/28 Javascript
Ajax分页插件Pagination从前台jQuery到后端java总结
2016/07/22 Javascript
Bootstrap作品展示站点实战项目2
2016/10/14 Javascript
获取JavaScript异步函数的返回值
2016/12/21 Javascript
bootstrap为水平排列的表单和内联表单设置可选的图标
2017/02/15 Javascript
Vue使用枚举类型实现HTML下拉框步骤详解
2018/02/05 Javascript
JS中appendChild追加子节点无效的解决方法
2018/10/14 Javascript
vue中过滤器filter的讲解
2019/01/21 Javascript
javascript 原型与原型链的理解及实例分析
2019/11/23 Javascript
js实现简单的贪吃蛇游戏
2020/04/23 Javascript
JavaScript动态生成表格的示例
2020/11/02 Javascript
[00:55]深扒TI7聊天轮盘语音出处3
2017/05/11 DOTA
python实现划词翻译
2020/04/23 Python
举例详解Python中threading模块的几个常用方法
2015/06/18 Python
深入浅析python 中的匿名函数
2018/05/21 Python
Django工程的分层结构详解
2019/07/18 Python
Django 设置admin后台表和App(应用)为中文名的操作方法
2020/05/10 Python
Python中用xlwt制作表格实例讲解
2020/11/05 Python
使用CSS变量实现炫酷惊人的悬浮效果
2019/04/26 HTML / CSS
DHC美国官网:日本通信销售第一的化妆品品牌
2017/11/12 全球购物
京东港澳售:京东直邮港澳台
2018/01/31 全球购物
凯撒娱乐:Caesars Entertainment
2018/02/23 全球购物
C语言面试题
2013/05/19 面试题
法院实习人员自我鉴定
2013/09/26 职场文书
大学生的自我鉴定范文
2014/01/21 职场文书
《回乡偶书》教学反思
2014/04/12 职场文书
企业法人授权委托书范本
2014/09/23 职场文书
2015年售票员工作总结
2015/04/29 职场文书
党员发展大会主持词
2015/07/03 职场文书