Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Chrome中的HTML5地理位置提示_Html_Google Chrome_Geolocation_File Uri - Fatal编程技术网

Chrome中的HTML5地理位置提示

Chrome中的HTML5地理位置提示,html,google-chrome,geolocation,file-uri,Html,Google Chrome,Geolocation,File Uri,刚刚开始进入HTML5和测试地理位置…喜欢它到目前为止。我遇到了一点减速…当我试图获取我的地理位置时,chrome会自动阻止页面获取我的位置。其他站点(如以下站点)不会发生这种情况: 我正在使用的脚本: 函数get_location(){ if(geo_position_js.init()){ geo_position_js.getCurrentPosition(显示地图,处理错误); } } 功能显示图(位置){ 变量纬度=位置坐标纬度; var经度=position.coords.lon

刚刚开始进入HTML5和测试地理位置…喜欢它到目前为止。我遇到了一点减速…当我试图获取我的地理位置时,chrome会自动阻止页面获取我的位置。其他站点(如以下站点)不会发生这种情况:

我正在使用的脚本:


函数get_location(){
if(geo_position_js.init()){
geo_position_js.getCurrentPosition(显示地图,处理错误);
}
}
功能显示图(位置){
变量纬度=位置坐标纬度;
var经度=position.coords.longitude;
警报(“纬度:+纬度+”长:+经度);
}
函数句柄错误(err){
警报(错误代码);
如果(err.code==1){
//用户说不!
}
}
if(导航器.地理位置){
navigator.geolocation.getCurrentPosition(显示地图,处理错误);
}否则{
错误('不支持');
}

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

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

python -m SimpleHTTPServer
它应该在端口8000上启动一个web服务器(可能是其他的,但它会在控制台中告诉您它正在侦听哪个端口),然后浏览到


如果您没有python,Ruby中会有等效的模块,或者Visual Web Developer Express附带内置的本地Web服务器。

请确保在您的设置中没有阻止它


要获得一个简单的解决方法,只需将HTML文件复制到一些云共享,如Dropbox,并使用浏览器中的共享链接即可。简单

如果您在服务器后面托管,但仍然面临问题: 尝试将localhost更改为127.0.0.1,例如更改为

我面临的问题是,我在EclipseIDE(EclipseLuna)中使用ApacheTomcat为一个站点提供服务

为了检查我的精神是否正常,我使用了雷米·夏普的演示:

尽管在服务器上托管了代码,但在对错误函数进行了细微调整后仍出现了错误(仅在firefox上运行,在chrome和safari上失败):

“用户拒绝地理定位”

我做了以下更改以获取更详细的错误消息:

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);
}
在virtualbox IE10后面的internet explorer上失败:


“当前位置无法确定”

正如robertc在回答中已经提到的那样,Chrome会阻止某些功能,比如本地文件的地理位置。设置自己的web服务器的一个更简单的替代方法是使用参数启动Chrome
——允许从文件访问文件。然后你可以使用地理位置,只要你没有在设置中关闭它。

我在尝试Gelocation API时也遇到了这个问题。然后,我通过visual studio启动了IIS express,然后访问了该页面,它在所有浏览器中都正常工作。

以上这些都对我没有帮助

经过一点研究,我发现截至M50(2016年4月)-


主机“localhost”是一种特殊的b/c类型,它的“潜在安全性”。如果部署到开发机器上,在开发过程中可能看不到错误。

最简单的方法是单击地址栏左侧的区域,并在那里更改位置设置。它允许设置位置选项,即使是
文件://


检查Google Chrome设置并允许位置访问

Change your default location settings.
On your computer, open Chrome.
At the top right, click More Settings.
Under "Privacy and security," click Site settings.
Click Location.
Turn Ask before accessing on or off.

在我更改了这些设置后,地理定位对我起了作用。

firefox在移动设备的页面相关问题中显示了提示btw:
python-m http.server
对于python 3.xHad同样的问题,并将文件放到了我的本地php服务器(xampp htdocs目录)中。我假设,如果您想在开发中的前端应用程序中使用地理定位,您不能仅仅从桌面上运行它,它必须是服务器端的。我想知道谷歌为什么决定在Chrome上增加这一限制。
php-S localhost:8080
php-S:Run with内置web服务器。
node app.js
Run simple node.js content server on port 9615是否有任何解决方案用于文件:/URI?这个答案与Chrome总是阻塞的具体问题无关
文件://
。不幸的是,链接的文章现在已经过时了。是的,感谢你这么做,在尝试让它工作(或使用safari-yuk!)多年后,简单地将url更改为127.0.0.1对我来说很有效。传奇对于本地开发人员,请使用
http://sitename.localhost
Google Chrome允许.localhost上的
getCurrentPosition()
on,谢谢!
Change your default location settings.
On your computer, open Chrome.
At the top right, click More Settings.
Under "Privacy and security," click Site settings.
Click Location.
Turn Ask before accessing on or off.