場景是醬嬸的:
vue頁面送出資料後走第三方接口,傳回的資料是一個html頁面,頁面上有一個隐藏的form,和隐藏的js,js中有window.onload自動送出表單,打開第三方的另一個頁面。
我們要做的是解析傳回的html資料,并彈出第三方的頁面。
嘗試了很多方法,因為vue一次性加載解析資料之後,不能解析js中的window.onload。于是我發傳回的資料,自己截取了其中form,用vue的方法重新寫了onload,就加載了。方法如下:
接口傳回的html資料
window.οnlοad=function(){ document.getElementById("autoForm").submit(); }
以上是第三方傳回資料,有保密資訊用。。。省略了,這段裡主要用的是form和js
js
data() {
bankHTML: ''
},
methods: {
open() {
var str = 'HTML傳回資料'
var start = '
'
var end = ''
var s = str.indexOf(start) + start.length
var e = str.indexOf(end)
this.bankHTML = str.substring(s, e)
// 截取body中的form部分,傳回傳到頁面上bankHTML,讓頁面解析
this.$nextTick(function() {
//必須用nextTick,讓頁面解析form之後再執行下面的程式
if (document.getElementById('autoForm')) {
document.getElementById('autoForm').target = '_blank'
document.getElementById('autoForm').submit()
//用document找到form,然後用_blank打開新頁面,送出表單
}
})
}
}
html
v-html解析html