欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

vue iframe傳參數

李中冰1年前10瀏覽0評論

在Vue中,經常需要使用到iframe組件來嵌入其他的網頁或應用程序,同時也需要通過iframe來傳遞各種參數,從而實現不同的功能。本文將詳細介紹Vue iframe傳參數的方法,幫助大家更好地掌握Vue框架的使用。

VUE中使用iframe嵌套外部網頁的方式不多,但是,如果需要嵌套外部網頁或使用某些第三方控件時,如何將某些參數傳入iframe中,是開發人員必須要面對的問題。

<iframe id="iframe1" class="hasframe" sandbox="allow-forms allow-scripts allow-same-origin"></iframe>

上面是一個最基本的帶有iframe的HTML代碼,在這個基礎上,我們可以通過src或者content來將所需參數傳給iframe。

<iframe id="iframe1" class="hasframe"
:src="'https://myotherpage.com/?id='+$route.query.id+'&name='+$route.query.name" 
sandbox="allow-forms allow-scripts allow-same-origin"></iframe>

使用Vue的路由功能,可以將src插入到iframe的地址屬性中,這樣我們就可以構建一個包含參數的URL,然后將URL分配給iframe的src屬性。這里的$route是Vue路由的全局注入,可以獲取到當前的路由信息。

上述代碼用了$route.query來獲取路由中參數的值。如果你的項目中沒有使用vue-router,那么可以考慮在前端解析URL獲取參數值。

created() {
let url = new URL(window.location.href);
this.id = url.searchParams.get('id');
this.name = url.searchParams.get('name');
console.log('id:' + this.id + ',name:' + this.name);
},

類似上述代碼,使用了URL API中的searchParams可以非常方便地解析URL中的查詢參數。

另外,我們還可以通過postMessage這個API接口來實現iframe與Vue組件之間的數據傳遞。

postMessage主要接收2個參數,第一個是傳遞的消息,第二個是接收消息的域名,當傳遞的域名與接收的域名不一致時,接收頁面將無法獲取消息。

在父級頁面中,我們可以通過以下代碼向iframe發送參數:

const iframe = document.getElementById('myiframe');
const messageObject = { type: 'params', data: {
id: userId, name: userName,
}};
iframe.contentWindow.postMessage(messageObject, '*');

其中,messageObject就是需要傳遞的參數,第二個參數支持傳入iframe的URL地址或域名,例如 https://myotherpage.com/ 或 http://localhost:8080。

接收iframe傳來的數據,可以通過以下代碼實現:

window.addEventListener('message', function(e){
if (e.origin != 'http://localhost:8080') {
return
}
const data = e.data;
if (data.type === 'params') {
console.log(data.data.id, data.data.name);
}
});

其中,需要校驗消息的來源是不是等于我們定義的域名,確保我們只獲取到來自我們知道的來源的消息。

到此,我們已經介紹了Vue中iframe傳遞參數的幾種方法:使用src地址傳遞參數,使用Vue路由傳遞參數以及通過postMessage實現跨域iframe傳遞參數。我們希望這篇文章能夠幫助到大家,更好地應用Vue框架。