2017-10-23 14 views
1

地理位置対応のcountry_nameはChromeとFirefoxでは動作していますが、Safariでは動作していません。これをどうすれば解決できますか?地理位置対応country_nameがSafariで動作しません

Javascriptを:

$.get("http://freegeoip.net/json/", function (response) { 
    $("#ip").html("IP: " + response.ip); 
    $("#country_code").html(response.country_code); 
    if(response.country_code=='NL'||response.country_code=='US'){ 
     document.getElementById(response.country_code).style.display = "block"; 
    } 
}, "jsonp"); 

HTML:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
<div id="NL">THE NL</div> 
<div id="US">THE US</div> 

CSS:

#NL { display:none;} 
#US { display:none;} 

Demo

+0

サファリにいくつかの広告ブロックプラグインがありますか? –

+0

アクティブな広告ブロッカーはありません。しかし、要素を調べるとSafariは次のエラーを出します:[警告] [ブロック] http://freegeoip.net/jsonから安全でないコンテンツを実行することが許可されていません –

答えて

1

フィドルがハイシエラに最新のSafariで働いています。 Chromeでこれを確認したところ、広告ブロックプラグインのために動作していなかったため、リクエストがブロックされていました。http://freegeoip.net/json/

この問題を解決するには、あなたのためのGET要求、クライアントの要求は、元のものとまったく同じになります)。

しかし、The page was not allowed to run insecure content from freegeoip.net/jsonと書かれているエラーは、何か違うものです。安全でないサイト(https://の代わりにhttp://)にリクエストしようとしています。

幸いこのサービスは、HTTPS上で動作するだけでリンクにsを追加し、それが動作するはず。

$.get("https://freegeoip.net/json/", function (response) { 
    $("#ip").html("IP: " + response.ip); 
    $("#country_code").html(response.country_code); 
    if(response.country_code=='NL'||response.country_code=='US'){ 
     document.getElementById(response.country_code).style.display = "block"; 
    } 
}, "jsonp"); 
+0

問題はありませんが、広告ブロックを持つユーザーにも同様の問題が発生します。これを克服する可能性の1つは、バックエンドに対して、その要求を行う要求を行うことです。 –

関連する問題