- 积分
- 3638
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2014-10-21
- 最后登录
- 1970-1-1
|
登录后查看更多精彩内容~
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
现在很多网站都需要使用高德地图,这里存在2个槛:
1、如何嵌入高德地图?
开发高德地图不能用webpack,而是原生开发,这导致我们必须以iframe的形式使用高德地图。
直接用iframe标签嵌入自己写的高德地图会失败,因为这里有一个叫"clickjacking"的安全机制,它阻止了自己的网页被其他网页嵌入,
我们需要在后端设置X_FRAME_OPTIONS,允许前端嵌入才行。
2、Vue页面与iframe通信问题
第1步,在vue中写一个iframe标签:
<iframe ref="iframe0"></iframe>
第2步,Vue新建一个对象,注意,这里的iframe0对应标签中的ref值
this.iframeWin = this.$refs.iframe0.contentWindow
第3步,准备一个函数,用以向iframe0发送信息:
sendMessage () {
let x={cmd: 'success',test: '来自父页面的问候'}
this.iframeWin.postMessage(x,'*')
}
第3步,在高德地图的网页中,准备一个函数接收这个信息:
function handleMessage (event) {
const data = event.data
if (data.cmd==="success"){
window.parent.postMessage({code:"success",test:"成功收到指示"}, '*');
}
}
window.addEventListener('message',handleMessage)//绑定函数
第4步,从高德地图的网页向父页面传信息:
let x={code: "success",test: "来自iframe的问候!"}
window.parent.postMessage({data:x}, '*');
第5步,在vue中写一个函数,接收高德地图发送的信息:
handleMessage (event) {
const data = event.data // iframe传来的数据
// 处理之:
if (data.code==="success"){
alert(data.test)
}
}
window.addEventListener('message', this.handleMessage)//绑定函数
至此,就实现了高德地图的嵌入和交互。很银性,很好用!
|
|