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 相关文章推荐
JS模拟酷狗音乐播放器收缩折叠关闭效果代码
Oct 29 Javascript
基于jquery实现左右按钮点击的图片切换效果
Jan 27 Javascript
jQuery简单入门示例之用户校验demo示例
Jul 09 Javascript
jquery.multiselect多选下拉框实现代码
Nov 11 Javascript
assert()函数用法总结(推荐)
Jan 25 Javascript
Bootstrap显示与隐藏简单实现代码
Mar 06 Javascript
HTML的select控件美化
Mar 27 Javascript
Bootstrap组件之下拉菜单,多级菜单及按钮布局方法实例
May 25 Javascript
基于Bootstrap table组件实现多层表头的实例代码
Sep 07 Javascript
Angular中的$watch方法详解
Sep 18 Javascript
extract-text-webpack-plugin用法详解
Feb 14 Javascript
从0到1构建vueSSR项目之node以及vue-cli3的配置
Mar 07 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
模仿OSO的论坛(四)
2006/10/09 PHP
PHP高级对象构建 多个构造函数的使用
2012/02/05 PHP
php中preg_match的isU代表什么意思
2015/10/01 PHP
标准版Eclipse搭建PHP环境的详细步骤
2015/11/18 PHP
PDO::lastInsertId讲解
2019/01/29 PHP
ThinkPHP3.2.3框架实现执行原生SQL语句的方法示例
2019/04/03 PHP
json跟xml的对比分析
2008/06/10 Javascript
jQuery调用WebService的实现代码
2011/06/19 Javascript
Extjs显示从数据库取出时间转换JSON后的出现问题
2012/11/20 Javascript
Javascript实现简单的富文本编辑器附演示
2014/06/16 Javascript
JS实现漂亮的淡蓝色滑动门效果代码
2015/09/23 Javascript
JavaScript实现图片自动加载的瀑布流效果
2016/04/11 Javascript
Vue.js列表渲染绑定jQuery插件的正确姿势
2017/06/29 jQuery
arcgis for js栅格图层叠加(Raster Layer)问题
2017/11/22 Javascript
Iview Table组件中各种组件扩展的使用
2018/10/20 Javascript
详解js中let与var声明变量的区别
2020/04/05 Javascript
VUE实现自身整体组件销毁的示例代码
2020/01/13 Javascript
[03:18]DOTA2亚洲邀请赛小组赛第一日 RECAP赛事回顾
2015/01/30 DOTA
python和shell变量互相传递的几种方法
2013/11/20 Python
Python的地形三维可视化Matplotlib和gdal使用实例
2017/12/09 Python
django启动uwsgi报错的解决方法
2018/04/08 Python
Python基于pyCUDA实现GPU加速并行计算功能入门教程
2018/06/19 Python
详解使用python绘制混淆矩阵(confusion_matrix)
2019/07/14 Python
Pytest参数化parametrize使用代码实例
2020/02/22 Python
Python单元测试及unittest框架用法实例解析
2020/07/09 Python
python Matplotlib模块的使用
2020/09/16 Python
python中编写函数并调用的知识点总结
2021/01/13 Python
HTML5实现QQ聊天气泡效果
2017/06/26 HTML / CSS
英国最大的电子零件及配件零售商:Partmaster
2017/04/24 全球购物
UGG英国官方网站:UGG UK
2018/02/08 全球购物
高中生家长会演讲稿
2014/01/14 职场文书
2014班子“三严三实”对照检查材料思想汇报
2014/09/18 职场文书
小学端午节活动总结
2015/02/11 职场文书
结婚老公保证书
2015/02/26 职场文书
大学生社会实践感想
2015/08/11 职场文书
MySQL 角色(role)功能介绍
2021/04/24 MySQL