Chrome中的HTML 5地理位置提示

AGo*_*ame 68 html5 google-chrome geolocation file-uri

刚刚开始进入HTML 5和测试地理位置...喜欢它到目前为止.我有点速度碰撞......当我试图获取我的地理位置时,chrome会自动阻止页面获取我的位置.这不会发生在其他网站,如下面的网站:

http://html5demos.com/geo

我正在使用的脚本:

<script type="text/javascript" JavaScript" SRC="geo.js"></script>   
<script type="text/javascript" JavaScript" SRC="Utility.js"></script> 
<script type="text/javascript" JavaScript" SRC="jquery.js"></script> 
<script type="text/javascript" JavaScript" SRC="modernizr.js"></script>  

function get_location() {

        if (geo_position_js.init()) {
            geo_position_js.getCurrentPosition(show_map, handle_error);
        }

    }
    function show_map(position) {
        var latitude = position.coords.latitude;
        var longitude = position.coords.longitude;

        alert("lat:" + latitude + " long:" + longitude);


    }
    function handle_error(err) {
        alert(err.code);
        if (err.code == 1) {
            // user said no!
        }
    }

    if (navigator.geolocation) {
        navigator.geolocation.getCurrentPosition(show_map, handle_error);
    } else {
        error('not supported');
    }
Run Code Online (Sandbox Code Playgroud)

我正在我的机器上的本地目录中测试这个,所以没有像"http://whatever.com/mytestpage.html"这样的"域名".这是我没有得到提示的原因吗?如果是这样,是否可以强制浏览器请求获取用户地理位置的权限,是否可以在我的方案中使用?

rob*_*rtc 97

Chrome中存在某种安全限制,用于从file:///URI 使用地理位置,但不幸的是,它似乎没有记录任何错误来表明这一点.它可以在本地Web服务器上运行.如果安装了python,请尝试在测试文件所在的目录中打开命令提示符并发出命令:

python -m SimpleHTTPServer
Run Code Online (Sandbox Code Playgroud)

它应该在端口8000上启动一个Web服务器(可能是其他东西,但它会在控制台中告诉你它正在侦听哪个端口),然后浏览到http:// localhost:8000/mytestpage.html

如果您没有python,则Ruby中有相应的模块,或者Visual Web Developer Express附带内置的本地Web服务器.

  • 用于python 3.x的`python -m http.server` (9认同)

Rya*_*yan 27

以上都没有帮助我.

经过一番研究后,我发现自M50(2016年4月)起,Chrome现在需要一个安全的来源(如HTTPS)进行地理定位.

不安全起源的弃用功能

主机"localhost"是特殊的b/c,它"具有潜在的安全性".如果要部署到开发计算机,则在开发期间可能看不到错误.

  • **对于本地开发**使用 `http://sitename.localhost` Google Chrome 允许在 .localhost 上使用 `getCurrentPosition()`,谢谢! (2认同)

Tob*_*ias 6

正如robertc在答案中已经提到的,Chrome会阻止某些功能,例如使用本地文件的地理位置.设置自己的Web服务器的更简单的替代方法是使用参数启动Chrome --allow-file-access-from-files.然后,您可以使用地理位置,前提是您未在设置中将其关闭.