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 相关文章推荐
yepnope.js使用详解及示例分享
Jun 23 Javascript
原生js与jQuery实现简单的tab切换特效对比
Jul 30 Javascript
JS处理json日期格式化问题
Oct 01 Javascript
由简入繁实现Jquery树状结构的方法(推荐)
Jun 10 Javascript
Bootstrap的基本应用要点浅析
Dec 19 Javascript
jquery uploadify隐藏上传进度的实现方法
Feb 06 Javascript
JS中showModalDialog关闭子窗口刷新主窗口用法详解
Mar 25 Javascript
Angular 4根据组件名称动态创建出组件的方法教程
Nov 01 Javascript
详解Angular6.0使用路由步骤(共7步)
Jun 29 Javascript
JavaScript ES2019中的8个新特性详解
Feb 20 Javascript
pageGroup.js实现分页功能
Jul 27 Javascript
vue+element搭建后台小总结 el-dropdown下拉功能
Apr 10 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_merge下进行数组合并的代码
2008/07/22 PHP
探讨PHP中this,self,parent的区别详解
2013/06/08 PHP
php实现查看邮件是否已被阅读的方法
2013/12/03 PHP
百度实时推送api接口应用示例
2014/10/21 PHP
100行PHP代码实现socks5代理服务器
2016/04/28 PHP
CI框架数据库查询之join用法分析
2016/05/18 PHP
php设计模式之状态模式实例分析【星际争霸游戏案例】
2020/03/26 PHP
jquery 经典动画菜单效果代码
2010/01/26 Javascript
WEB 浏览器兼容 推荐收藏
2010/05/14 Javascript
(function($){...})(jQuery)的意思
2010/07/22 Javascript
关于setInterval、setTimeout在jQuery中的使用注意事项
2011/09/28 Javascript
.NET微信公众号开发之创建自定义菜单
2015/07/16 Javascript
javascript控制层显示或隐藏的方法
2015/07/22 Javascript
详解JavaScript for循环中发送AJAX请求问题
2020/06/23 Javascript
NodeJS实现图片上传代码(Express)
2017/06/30 NodeJs
限时抢购-倒计时的完整实例(分享)
2017/09/17 Javascript
关于vue3.0中的this.$router.replace({ path: '/'})刷新无效果问题
2020/01/16 Javascript
Vue中qs插件的使用详解
2020/02/07 Javascript
[02:19]2018年度DOTA2最佳核心位选手-完美盛典
2018/12/17 DOTA
Python脚本实现DNSPod DNS动态解析域名
2015/02/14 Python
浅析Python编写函数装饰器
2016/03/18 Python
Python日期时间模块datetime详解与Python 日期时间的比较,计算实例代码
2018/09/14 Python
Python2和Python3.6环境解决共存问题
2018/11/09 Python
Python函数中的可变长参数详解
2019/09/12 Python
python将print输出的信息保留到日志文件中
2019/09/27 Python
解决Tensorflow sess.run导致的内存溢出问题
2020/02/05 Python
python第三方库学习笔记
2020/02/07 Python
python3 googletrans超时报错问题及翻译工具优化方案 附源码
2020/12/23 Python
Expedia泰国:预订机票、酒店和旅游包(航班+酒店)
2016/09/27 全球购物
英国在线花园中心:You Garden
2018/06/03 全球购物
Dr. Martens马汀博士澳大利亚官网:马丁靴鼻祖
2019/07/02 全球购物
贯彻落实“八项规定”思想汇报
2014/09/13 职场文书
办公用品质量保证书
2015/05/11 职场文书
2016年度先进班组事迹材料
2016/03/01 职场文书
《童年》读后感(三篇)
2019/08/27 职场文书
TypeScript 使用 Tuple Union 声明函数重载
2022/04/07 Javascript