Chrome 5中的HTML 5地理位置提示
刚刚开始进入HTML 5并testing出地理位置…喜欢它到目前为止。 我碰到了一点速度凹凸,虽然…当我试图得到我的地理位置,铬自动阻止页面得到我的位置。 这不会发生在其他网站,如下面的网站:
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'); }
我从我的机器上的本地目录中testing了这个,所以没有像“http://whatever.com/mytestpage.html”这样的“域名”。 这是为什么我没有得到提示? 如果是这样,是否有可能强迫browswer请求获取用户的地理位置的权限,并可能在我的情况?
在Chrome中使用地理位置的方式存在一些安全限制file:///
URI file:///
,但不幸的是,它似乎没有logging任何错误来表明这一点。 它将从本地Web服务器工作。 如果您安装了python,请尝试在您的testing文件所在的目录中打开一个命令提示符并发出以下命令:
python -m SimpleHTTPServer
它应该启动一个端口8000上的Web服务器(可能是别的,但它会告诉你在控制台上它监听的是什么端口),然后浏览到http:// localhost:8000 / mytestpage.html
如果你没有python,那么在Ruby中有相当的模块,或者Visual Web Developer Express带有一个内置的本地web服务器。
以上都没有帮助我。
经过一些调查,我发现截至M50(2016年4月) – Chrome现在需要一个安全的来源(如HTTPS)进行地理定位 。
不安全起源的弃用function
主机“本地主机”是特殊的B / C其“可能安全”。 如果您正在部署到您的开发机器,您可能在开发过程中看不到错误。
正如在robertc的回答中已经提到的那样,Chrome会阻止某些function,如使用本地文件的地理位置。 设置自己的Web服务器的一个更简单的替代方法就是使用参数 --allow-file-access-from-files
启动Chrome 。 那么你可以使用地理位置,只要你没有在你的设置中closures它。
确保它没有在您的设置被阻止
http://www.howtogeek.com/howto/16404/how-to-disable-the-new-geolocation-feature-in-google-chrome/
如果您托pipe在服务器后面,仍然面临问题:请尝试将localhost更改为127.0.0.1,例如http:// localhost:8080 / to http://127.0.0.1:8080/
我面临的问题是,我在eclipse IDE(eclipse luna)中使用apache tomcat提供服务。
为了我的理智检查,我使用了Remy Sharp的演示: https : //github.com/remy/html5demos/blob/eae156ca2e35efbc648c381222fac20d821df494/demos/geo.html
并得到错误后,尽pipe托pipe在服务器上的代码(只在Firefox上工作,并在铬和Safari浏览器上失败)的错误function微调后:
“用户拒绝地理位置”
我做了以下更改以获取更详细的错误消息:
function error(msg) { var s = document.querySelector('#status'); msg = msg.message ? msg.message : msg; //add this line s.innerHTML = typeof msg == 'string' ? msg : "failed"; s.className = 'fail'; // console.log(arguments); }
在http://10.0.2.2:8080上的virtualbox IE10后面的Internet Explorer上失败:
“目前的位置无法确定”
要获得简单的解决方法,只需将HTML文件复制到某个云共享(如Dropbox),然后在浏览器中使用共享链接即可。 简单。
最简单的方法是点击地址栏左侧的区域,并在那里更改位置设置。 它允许设置位置选项,即使是file:///
当我尝试使用Gelocation API时,我也遇到了这个问题。 然后,我通过Visual Studio启动IIS express,然后访问该页面,并且在所有浏览器中都没有任何问题。