一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

node.js|vue.js|jquery|angularjs|React|json|js教程|

服務器之家 - 編程語言 - JavaScript - Vue 使用iframe引用html頁面實現vue和html頁面方法的調用操作

Vue 使用iframe引用html頁面實現vue和html頁面方法的調用操作

2021-11-19 16:35夢 隱 JavaScript

這篇文章主要介紹了Vue 使用iframe引用html頁面實現vue和html頁面方法的調用操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

當我們需要在vue中使用其他模塊或者其他地方的一些html頁面功能時,我們可以使用iframe去引用html頁面,實現他們的交互

首先我們可以再vue頁面中使用標簽引用html頁面

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<template>
 <div>
  <iframe
   name="iframeMap"
   id="iframeMapViewComponent"
   width="100%"
   height="470px"
   v-bind:src="smgHtmlPath"
   frameborder="0"
   scrolling="no"
   ref="iframeDom"
  ></iframe>
 </div>
</template>

其中src就是我們html的地址,我們可以在data中定義smgHtmlPath屬性,在我們的created方法中初始化,為該屬性賦予初始值

如果頁面加載出來了,我們就可以開始vue頁面和html頁面的交互了

如果我們需要vue頁面調用html頁面方法,我們可以使用如下代碼

?
1
2
3
mounted() {
 this.iframeWin = this.$refs.iframeDom.contentWindow;
},

首先在我們的mounted方法中得到iframe對象

在vue頁面使用postMessage的API向html頁面發送請求數據,因為我們的vue和html頁面可能不在同一域名,所以會產生跨域的問題,這里我們使用的postMessage可以實現跨域,我這里在google和IE11測試都是可以跨域的

?
1
2
3
loadSmgxmlModels(data) {
    this.iframeWin.postMessage(data,"*")
}

這里的data就是我們要傳遞給html頁面的數據

“*”,這里代表的是所有地址可以接收到,我們也可以指定地址,例如:www.baidu.com

在html頁面的標簽中編寫監聽方法,用來監聽我們的請求,獲取數據

?
1
2
3
4
5
6
7
window.addEventListener('message', function(ev) {
  // 當我們是父子窗口進行消息傳遞時,可以使用此判斷,只接受父窗口傳遞來的消息,
  if (ev.source !== window.parent) return;
  var data = ev.data;
 console.log("vue傳遞的數據為:"+data);
  //下面可以調用我們html頁面js中的方法,使用傳遞的數據進行操作了
}, false);

這里我們監聽的就是message,可以獲取數據。

補充知識:Vue界面使用iframe嵌套html界面的傳值問題

一.從父頁面給子頁面傳值

可以通過url進行傳值,若嵌入外網例如www.baidu.com,可以設置為

<iframe name = "child" id = "child" :src="www.baidu.com#asd=1" width="1920" height="880" frameborder="0" scrolling="no" style="position:related;top: 2.8px;left: 0px;"></iframe>

asd后面跟的值可以根據需要更改,不影響地址的訪問

若為本地html文件,類似的可以寫作

:src="test.html#asd =1"

但是如何在子頁面讀取asd的值這個還沒探究成功,稍后若尋找到合適的方法會再更新。這種方法比較適合比較簡單的需求

二.父頁面獲取子頁面的值

例如我們在子頁面設置四個click事件,JS代碼如下

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<script>
    var n = 0;
    function FN()
    {
      n = 1;
      alert('hello1'+n);
    }
    function EN()
    {
      n = 2;
      alert('hello1'+n);
    }
    function ER()
    {
      n = 3;
      alert('hello1'+n);
    }
    function GN()
    {
      n = 4;
      alert('hello1'+n);
    }
</script>

那么在父頁面我們可以在method中定義如下函數獲取到n的值

?
1
2
3
4
callchild(){
   let obj1=window.frames["child"];//獲得對應iframe的window對象
   alert(obj1.n);
  },

將callchild函數由某個button觸發,可以看到彈出窗口

Vue 使用iframe引用html頁面實現vue和html頁面方法的調用操作

以上這篇Vue 使用iframe引用html頁面實現vue和html頁面方法的調用操作就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持服務器之家。

原文鏈接:https://blog.csdn.net/weixin_44209403/article/details/107344666

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 天天快乐高清在线观看 | 爽好舒服宝贝添奶吻戏 | 被老头操| 亚洲国产成人精品无码区APP | 国产123区 | 国产精品高清一区二区三区 | 粗了大了 整进去好爽视频 刺激一区仑乱 | 女人张开腿 让男人桶个爽 免费观看 | ak福利午夜在线观看 | 无人区在线观看免费国语完整版 | 麻豆视频免费在线观看 | 亚洲不卡视频在线观看 | 午夜精品国产 | 欧美特欧美特级一片 | 日本性漫画 | 金发美女与黑人做爰 | 女人被爽到呻吟娇喘的视频动态图 | 闺蜜的样子小说安沁在线阅读 | 国产精品久久久久久久免费大片 | 欧美精品日韩一区二区三区 | 色哺乳妇hd | 九色PORNY真实丨国产大胸 | 天美蜜桃精东乌鸦传媒 | 国产一二在线观看视频网站 | 公园吃女人奶野战视频 | 日本阿v精品视频在线观看 日本xxx片免费高清在线 | 亚洲色图150p | chinese男gay| 114毛片免费观看网站 | 国产成人精品999在线 | 小sao货水好多真紧h的视频 | 色老板视频在线 | 国产在线视频一区二区三区 | 欧美一级片在线免费观看 | 很黄的网站在线观看 | 婷婷99av综合| 国产成人精品实拍在线 | 俄罗斯烧性春三级k8播放 | 91精品国产麻豆国产自产在线 | 亚洲国产精品久久丫 | 亚洲第一福利视频 |