高德地图使用选址组件时使用iframe.postMessage监听不到返回值

用的miniui,在打开新窗口中调用该组建时,使用官方文档不起效

(function(){
    var iframe = document.getElementById('test').contentWindow;
    document.getElementById('test').onload = function(){
      iframe.postMessage('hello','https://m.amap.com/picker/');
    };
    window.addEventListener("message", function(e){
      alert('您选择了:' + e.data.name + ',' + e.data.location)
    }, false);
}())

var mock = {
                log: function(result) {
                        window.parent.setIFrameResult('log', result);
                }
    }

        console = mock;
        window.Konsole = {
                exec: function(code) {
                        code = code || '';
                        try {
                                var result = window.eval(code);
                                window.parent.setIFrameResult('result', result);
                        } catch(e) {
                                window.parent.setIFrameResult('error', e);
                        }
                }
        }

由于是在miniui中打开的一个新页面中调用的,所以在这里的代码

window.addEventListener("message", function(e){
      alert('您选择了:' + e.data.name + ',' + e.data.location)
    }, false);

应该改为

window.parent.addEventListener("message", function(e){
      alert('您选择了:' + e.data.name + ',' + e.data.location)
    }, false);

最外层框架监听回调信息.

你可能感兴趣的:(高德地图选址组件)