HTML 5に着手し、地理的位置をテストし始めたところです。しかし、少しスピードバンプを打っています...位置情報を取得しようとすると、chromeは自動的に位置情報の取得からページをブロックします。これは他のサイトでは発生しません。以下のサイト:
私が使用しているスクリプト:
<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');
}
私は自分のマシンのローカルディレクトリからこれをテストしているので、実際には「http://whatever.com/mytestpage.html」のような「ドメイン」はありません。これがプロンプトが表示されない理由ですか?もしそうなら、ユーザーの地理的位置を取得する許可をブラウザに強制することは可能ですか?私のシナリオでは可能ですか?
Chromeには、file:///
URI。ただし、残念ながら、それを示すエラーは記録されていないようです。ローカルWebサーバーから動作します。 pythonがインストールされている場合、テストファイルがあるディレクトリでコマンドプロンプトを開き、コマンドを発行してみてください。
python -m SimpleHTTPServer
ポート8000でWebサーバーを起動する必要があります(別のポートである可能性がありますが、コンソールでリッスンしているポートが表示されます)。次に、 http:// localhost:8000/mytestpage.html
pythonがない場合、Rubyには同等のモジュールがあります。または、Visual Web Developer ExpressにはローカルWebサーバーが組み込まれています。
上記のどれも私を助けませんでした。
少し調査した結果、M50(2016年4月)の時点で- Chromeでは、Geolocationにセキュアなオリジン(HTTPSなど)が必要になりました であることがわかりました。
ホスト「localhost」は特別なb/cであり、「潜在的に安全」です。開発マシンにデプロイしている場合、開発中にエラーが表示されない場合があります。
Robertcによる回答で既に述べたように、Chromeはローカルファイルのある地理的位置などの特定の機能をブロックします。独自のWebサーバーをセットアップするより簡単な方法は、start Chromeをparameter--allow-file-access-from-files
で開始することです。設定でジオロケーションをオフにしない限り、ジオロケーションを使用できます。
サーバーの背後でホストしているが、まだ問題に直面している場合:localhostを127.0.0.1例 http:// localhost:8080 / to http://127.0.0.1:8080/
私が直面していた問題は、Eclipse内でApache Tomcatを使用してサイトを提供していたことでしたIDE(Eclipse luna)。
私の健全性チェックでは、Remy Sharpのデモを使用していました: https://github.com/remy/html5demos/blob/eae156ca2e35efbc648c381222fac20d821df494/demos/geo.html
サーバーでコードをホストしているにも関わらず、エラー関数を微調整した後にエラーが発生していました(firefoxでのみ動作し、chrome and 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);
}
http://10.0.2.2:808 のvirtualbox IE10の背後にあるInternet Explorerで失敗します:
「現在の場所を特定できません」
簡単な回避策として、HTMLファイルをDropboxなどのクラウド共有にコピーし、ブラウザーで共有リンクを使用します。簡単です。
Geolocation APIを試しているときにも、この問題がありました。その後、IIS Visual Studioを介してExpressを開始し、ページにアクセスしましたが、すべてのブラウザーで問題なく動作しました。