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 相关文章推荐
自己动手手写jQuery插件总结
Jan 20 Javascript
Javascript中的方法和匿名方法实例详解
Jun 13 Javascript
JavaScript事件 &quot;事件对象&quot;的注意要点
Jan 14 Javascript
javascript每日必学之条件分支
Feb 17 Javascript
JS中取二维数组中最大值的方法汇总
Apr 17 Javascript
微信小程序 rpx 尺寸单位详细介绍
Oct 13 Javascript
BootStrap 实现各种样式的进度条效果
Dec 07 Javascript
利用webstrom调试Vue.js单页面程序的方法教程
Jun 06 Javascript
详解vue指令与$nextTick 操作DOM的不同之处
Aug 02 Javascript
7个好用的JavaScript技巧分享(译)
May 07 Javascript
koa-passport实现本地验证的方法示例
Feb 20 Javascript
如何利用javascript接收json信息并进行处理
Aug 06 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 array_slice函数的使用以及参数详解
2008/08/30 PHP
PHP中通过加号合并数组的一个简单方法分享
2011/01/27 PHP
php _autoload自动加载类与机制分析
2012/02/10 PHP
用PHP代码在网页上生成图片
2015/07/01 PHP
Thinkphp单字母函数使用指南
2016/05/08 PHP
php使用scandir()函数扫描指定目录下所有文件示例
2019/06/08 PHP
2007/12/23更新创意无限,简单实用(javascript log)
2007/12/24 Javascript
js限制文本框输入长度两种限制方式(长度、字节数)
2012/12/19 Javascript
IE的fireEvent方法概述及应用
2013/02/22 Javascript
JS 加入收藏夹的代码(主流浏览器通用)
2013/05/13 Javascript
jQuery+css实现非常漂亮的水平导航菜单效果
2016/07/27 Javascript
ECMAScript6轮播图实践知识总结
2016/08/17 Javascript
AngularJS删除路由中的#符号的方法
2016/09/20 Javascript
js判断节假日实例代码
2017/12/27 Javascript
在 Vue-CLI 中引入 simple-mock实现简易的 API Mock 接口数据模拟
2018/11/28 Javascript
layui自定义验证,用ajax查询后台是否有重复数据,form.verify的例子
2019/09/06 Javascript
纯js+css实现仿移动端淘宝网站的弹出详情框功能
2019/12/29 Javascript
微信小程序自定义navigationBar顶部导航栏适配所有机型(附完整案例)
2020/04/26 Javascript
[09:13]DOTA2-DPC中国联赛 正赛 Ehome vs Magma 选手采访 1月19日
2021/03/11 DOTA
Python实现根据指定端口探测服务器/模块部署的方法
2014/08/25 Python
Django中的Model操作表的实现
2018/07/24 Python
Django 迁移、操作数据库的方法
2019/08/02 Python
Python使用random模块生成随机数操作实例详解
2019/09/17 Python
pandas中遍历dataframe的每一个元素的实现
2019/10/23 Python
python实现用户名密码校验
2020/03/18 Python
Python urllib3软件包的使用说明
2020/11/18 Python
联想哥伦比亚网上商城:Lenovo Colombia
2017/01/10 全球购物
什么时候用assert
2015/05/08 面试题
医学护理毕业生自荐信
2013/11/07 职场文书
餐厅经理岗位职责和岗位目标
2014/02/13 职场文书
八一建军节营销活动方案
2014/08/31 职场文书
党的群众路线教育实践活动对照检查材料思想汇报
2014/09/19 职场文书
《分数乘法》教学反思
2016/02/24 职场文书
python编程简单几行代码实现视频转换Gif示例
2021/10/05 Python
吉利入股戴姆勒后smart“长大了”
2022/04/21 数码科技
Python如何快速找到多个字典中的公共键(key)
2022/04/29 Python