VUE頁(yè)面中加載外部HTML的示例代碼
前后端分離,后端提供了接口。但有一部分?jǐn)?shù)據(jù),比較產(chǎn)品說明文件,是存在其他的服務(wù)器上的。
所以,在頁(yè)面顯示的時(shí)候,如果以頁(yè)面內(nèi)嵌的形式顯示這個(gè)說明文件。需要搞點(diǎn)事情以達(dá)到想要的效果。
不同以往的IFRAME標(biāo)簽,那種方式比較Low,另外有其他的一些BUG。
本文思路是把HTML請(qǐng)求以來,以v-html的形式加載到頁(yè)面內(nèi)部。注冊(cè)全局組件【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{ // 使用時(shí)請(qǐng)使用 :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>
上一張效果圖
注意事項(xiàng):
- 直接使用axios處理的GET請(qǐng)求,需要處理跨域
- 外部的css樣式會(huì)作用到顯示的html
- 同時(shí)加載的外部html里的script也可能會(huì)執(zhí)行,需要按需處理下
- 外部HTML文件內(nèi)部的相對(duì)路徑將不會(huì)被自動(dòng)識(shí)別,絕對(duì)路徑可以
NGINX跨域配置:
(Origin如果使用*的話,好像會(huì)出錯(cuò),這里直接使用請(qǐng)求源的地址,如果擔(dān)心安全性的話,可以用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; ... }
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
vue+element-ui+ajax實(shí)現(xiàn)一個(gè)表格的實(shí)例
下面小編就為大家分享一篇vue+element-ui+ajax實(shí)現(xiàn)一個(gè)表格的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-03-03Vue3中reactive丟失響應(yīng)式的問題解決(避大坑!)
這篇文章主要給大家介紹了關(guān)于Vue3中reactive丟失響應(yīng)式的問題解決,vue3中reactive定義的引用類型直接賦值導(dǎo)致數(shù)據(jù)失去響應(yīng)式 ,需要的朋友可以參考下2023-07-07vue項(xiàng)目開發(fā)環(huán)境工具node搭建過程
最近在開始接觸做vue框架的前端項(xiàng)目,以前用的前端比如html,js,css等都是比較原生的,寫好后直接瀏覽器打開就行,今天就先記錄一下vue的開發(fā)運(yùn)行搭建過程,感興趣的朋友一起看看吧2023-09-09vue封裝自定義指令之動(dòng)態(tài)顯示title操作(溢出顯示,不溢出不顯示)
這篇文章主要介紹了vue封裝自定義指令之動(dòng)態(tài)顯示title操作(溢出顯示,不溢出不顯示),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-11-11使用Vite+Vue3+TypeScript?搭建開發(fā)腳手架的詳細(xì)過程
這篇文章主要介紹了Vite+Vue3+TypeScript?搭建開發(fā)腳手架的詳細(xì)過程,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-02-02