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类和继承 constructor属性
Mar 04 Javascript
Jquery中getJSON在asp.net中的使用说明
Mar 10 Javascript
jQuery实现单击和鼠标感应事件
Feb 01 Javascript
moment.js轻松实现获取当前日期是当年的第几周
Feb 05 Javascript
jQuery实现别踩白块儿网页版小游戏
Jan 18 Javascript
完美解决spring websocket自动断开连接再创建引发的问题
Mar 02 Javascript
详解Vue.js组件可复用性的混合(mixin)方式和自定义指令
Sep 06 Javascript
JavaScript 日期时间选择器一些小结
Apr 02 Javascript
简化vuex的状态管理方案的方法
Jun 02 Javascript
7个好用的JavaScript技巧分享(译)
May 07 Javascript
微信小程序实现轨迹回放的示例代码
Dec 13 Javascript
antd多选下拉框一行展示的实现方式
Oct 31 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
特详细的PHPMYADMIN简明安装教程
2008/08/01 PHP
PHP YII框架开发小技巧之模型(models)中rules自定义验证规则
2015/11/16 PHP
Yii核心验证器api详解
2016/11/23 PHP
PHP实现求两个字符串最长公共子串的方法示例
2017/11/17 PHP
PHP实现将多个文件压缩成zip格式并下载到本地的方法示例
2018/05/23 PHP
详解no input file specified 三种解决方法
2019/11/29 PHP
PHP 超级全局变量相关总结
2020/06/30 PHP
web 页面分页打印的实现
2009/06/22 Javascript
nodejs win7下安装方法
2012/05/24 NodeJs
jQuery 遍历-nextUntil()方法以及prevUntil()方法的使用介绍
2013/04/26 Javascript
JS幻灯片可循环播放可平滑旋转带滚动导航(自写)
2013/08/05 Javascript
jQuery中 bind的用法简单介绍
2017/02/13 Javascript
angularJs的ng-class切换class
2017/06/23 Javascript
web前端开发中常见的多列布局解决方案整理(一定要看)
2017/10/15 Javascript
Vue2.X 通过AJAX动态更新数据
2018/07/17 Javascript
vue监听对象及对象属性问题
2018/08/20 Javascript
手写Vue2.0 数据劫持的示例
2021/03/04 Vue.js
[03:28]2014DOTA2国际邀请赛 走近EG战队天才中单Arteezy
2014/07/12 DOTA
PyQt5每天必学之关闭窗口
2018/04/19 Python
python实现桌面壁纸切换功能
2019/01/21 Python
python3 图片 4通道转成3通道 1通道转成3通道 图片压缩实例
2019/12/03 Python
Python实现汇率转换操作
2020/05/03 Python
Pytorch通过保存为ONNX模型转TensorRT5的实现
2020/05/25 Python
英国轻奢珠宝品牌:Astley Clarke
2016/12/18 全球购物
自我鉴定思想方面
2013/10/07 职场文书
《长征》教学反思
2014/04/27 职场文书
学雷锋宣传标语
2014/06/25 职场文书
2014年卫生监督工作总结
2014/12/09 职场文书
鸟的天堂导游词
2015/01/31 职场文书
涨价通知怎么写
2015/04/23 职场文书
初中班干部工作总结
2015/08/10 职场文书
清明扫墓感想
2015/08/11 职场文书
CocosCreator如何实现划过的位置显示纹理
2021/04/14 Javascript
用python实现监控视频人数统计
2021/05/21 Python
linux下导入、导出mysql数据库命令的实现方法
2021/05/26 MySQL
canvas 中如何实现物体的框选
2022/08/05 Javascript