当前位置:  开发笔记 > 编程语言 > 正文

打开新的浏览器窗口(谷歌地图),而不是在navigator.geolocation.getCurrentPosition回调中作为弹出窗口

如何解决《打开新的浏览器窗口(谷歌地图),而不是在navigator.geolocation.getCurrentPosition回调中作为弹出窗口》经验,为你挑选了0个好方法。

我正在尝试在navigator.geolocation.getCurrentPosition的回调中的新浏览器窗口中打开Goog​​le地图。

问题是浏览器将新窗口作为弹出窗口打开,因为调用是异步的。在大多数浏览器中,询问用户是否要允许弹出窗口。但是,某些浏览器(尤其是移动浏览器)不会显示此消息。取而代之的是,它们只是阻止了弹出窗口,对于用户而言,似乎什么也没有发生。

我尝试的第一种方法是(缩短版本,不进行错误处理等):

$("#getGoogleDirection").on("click",function(e){
    navigator.geolocation.getCurrentPosition(openMap);  
});

function openMap(position){  

    var userLat = position.coords.latitude;
    var userLng = position.coords.longitude;
    var destinationLat = "";
    var destinationLng = "";

    window.open("https://www.google.com/maps/dir/"+userLat+","+userLng+"/"+destinationLat+","+destinationLng+"/");

}

如果浏览器询问用户是否要打开弹出窗口,则此方法有效。但是,如前所述,某些浏览器不询问用户,而只是阻止弹出窗口。

所以我尝试了另一个选择:

var newWindow;

$("#getGoogleDirection").on("click",function(e){
    navigator.geolocation.getCurrentPosition(openMap);  
    newWindow = window.open('', '_blank');
    newWindow.document.write('Loading route...');
});

function openMap(position){  

    var userLat = position.coords.latitude;
    var userLng = position.coords.longitude;
    var destinationLat = "";
    var destinationLng = "";

    newWindow.location.href = 'https://www.google.com/maps/dir/"+userLat+","+userLng+"/"+destinationLat+","+destinationLng+"/"';
}

这也有效。但是,问题在于浏览器打开了新窗口,但在旧窗口中打开了navigator.geolocation.getCurrentPosition的确认弹出框。因此,必须返回到旧窗口,按确认按钮,然后再返回新窗口。这对于用户来说不是很方便。

是否可以通过编程方式进行窗口切换?第二,可以同步制作navigator.geolocation.getCurrentPosition,以便我可以调用

window.open()

直接在$(“#getGoogleDirection”)的点击事件处理程序中,因为不会将其作为弹出窗口打开。

非常感谢!

推荐阅读
手机用户2402852307
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有