2015-10-05 117 views
1

正在處理html5地理位置。html5地理位置無法在Safari瀏覽器上工作

在Mozilla,Chrome,IE上試過。在他們身上工作得很好,但不適合徒步旅行。在Mac上的Safari(8.0.5)進行測試,Safari瀏覽器(5.1)在Windows

只是擊中網址

http://www.w3schools.com/html/html5_geolocation.asp 

OR

http://www.w3schools.com/html/tryit.asp?filename=tryhtml5_geolocation 

    <!DOCTYPE html> 
<html> 
<body> 

<p>Click the button to get your coordinates.</p> 

<button onclick="getLocation()">Try It</button> 

<p id="demo"></p> 

<script> 
var x = document.getElementById("demo"); 

function getLocation() { 
    if (navigator.geolocation) { 
     navigator.geolocation.getCurrentPosition(showPosition); 
    } else { 
     x.innerHTML = "Geolocation is not supported by this browser."; 
    } 
} 

function showPosition(position) { 
    x.innerHTML = "Latitude: " + position.coords.latitude + 
    "<br>Longitude: " + position.coords.longitude; 
} 
</script> 

</body> 
</html> 

它給彈出允許/禁止,但不執行任何操作後允許它。 我已經測試過與wi-fi連接的Mac上的Safari瀏覽器,但也不適用於wi-fi和LAN上的筆記本電腦。

+0

如果可能的話,您可以考慮通過使用您正在測試的機器嘗試通過另一個網絡上的無線網絡進行故障排除嗎?例如,如果可以的話,從公共WiFi熱點嘗試。 – sideshowbarker

+0

不幸的是,當Safari做到這一點時,似乎可能沒有任何有用的方式來以編程方式獲取有關失敗原因的信息(例如,如果由於機器正在使用以太網連接而導致失敗,該細節未公開由Safari以任何方式你可以到達)。但在這種情況下,您應該嘗試其他使用Geolocation API的Web應用程序(例如Web上的教程網站上的演示應用程序),並查看它們是否也在您的環境中的Safari中失效(它們幾乎肯定會)。在這種情況下,您無法解決問題。 – sideshowbarker

+0

@sideshowbarker感謝您的建議:),我已經測試過與Wi-Fi連接的Mac上的safari,它在那裏工作,但不適用於Wi-Fi和LAN上的筆記本電腦。 – Kamini

回答

3

您是否連接了無線或有線網絡?

看來safari有麻煩,當你沒有連接wi-fi。

來源

Geolocation not workin on Safari 5.x on Windows 7/XP

Geolocation in Safari 5

+0

@ParanOa嘗試過兩種方法,但同樣的麻煩。 – Kamini

+0

@Kamini你確定你在Safari中使用wifi進行測試嗎?你的以太網電纜拔掉了?因爲這裏引用的其他StackOverlfow答案表明其他人遇到了與您報告完全相同的問題,但只有當他們使用「有線」(以太網)連接時(在這種情況下,Safari似乎或有時只是返回錯誤而不是嘗試確定位置)。 – sideshowbarker

+0

@ParanOa嗨,它是工作 - >在MAc與Wi - Fi的Safari瀏覽器,但不適用於 - >與Wi - Fi的Windows Safari瀏覽器。 – Kamini

4

基於對這個問題的例子,下面是一個完整的工作片段:

<p id=demo> 
<script> 
var x = document.getElementById("demo"); 
function getLocation() { 
    if (navigator.geolocation) { 
     navigator.geolocation.getCurrentPosition(showPosition); 
    } else { 
     x.innerHTML = "Geolocation is not supported by this browser."; 
    } 
} 
function showPosition(position) { 
    x.innerHTML = "Latitude: " + position.coords.latitude + 
    "<br>Longitude: " + position.coords.longitude; 
} 
getLocation() 
</script> 

我測試了在Safari瀏覽器在我的環境並按預期工作。這個問題中的實際例子是不完整的,所以它永遠不會做任何事情。所以很難知道在沒有看到完整的代碼的情況下可能在Mozilla,Chrome和IE中工作的內容。

如果上面的代碼仍然不爲你在野生動物園的工作,請打開Safari的網絡督察(例如,從開發頁面上的菜單或右鍵單擊並選擇檢查元素)然後轉到控制檯選項卡,然後檢查以查看記錄了哪些錯誤。

現在,只要將代碼段,只是完全清楚,一些基本點需要注意:

  • 腳本必須實際調用getLocation()功能(而不僅僅是把它定義)
  • 文檔實際上必須有一個id=demo元素
  • 腳本應該在id=demo元素之後放置(如果你把呼叫getLocation()中,例如,文檔的head,它是行不通的,因爲它會在前運行元素存在於DOM中)

此外,一般說明:永遠不要使用w3schools.com的任何東西。這是馬虎,非常不可靠,維護很差。請使用MDN。例如,MDN有一個很好的Using geolocation頁面,其中complete code for a good live example

+0

感謝您的回覆@sideshowbarker我已經更新了代碼,並在Mac和Windows上檢查了Safari上的MDN示例,但給出了消息「無法檢索到您的位置」。請幫忙。 – Kamini

0

不幸的是Apple不通過HTTP連接提供地理位置數據。您需要HTTPS才能訪問Safari上的客戶端地理位置。

相關問題