2011-12-07 96 views
1

我想要爲我們的IE8筆記本電腦進行地理定位工作的多種選擇,並且調查了Google Chrome Frame(其工作原理)和jquery polyfill(這是我正在嘗試工作的)。該示例取自的網站是webshims,我已驗證所提示的演示頁面在IE8中的工作原理,但我無法爲自己重新創建該示例。這是我的jsp:Webshims,IE8和地理位置

<%@page contentType="text/html" pageEncoding="UTF-8"%> 
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 
<!DOCTYPE html> 
<html> 
    <head> 
    <meta charset=utf-8> 
    <title>Geolocation</title> 
    <script src="<c:url value="/js/jquery-1.6.4.min.js"/>" type="text/javascript"></script> 
    <script src="<c:url value="/js/modernizr-latest.js"/>" type="text/javascript"></script> 
    <script src="<c:url value="/js/polyfiller.js"/>" type="text/javascript"></script> 
    <script type="text/javascript"> 
     //http://afarkas.github.com/webshim/demos/demos/geolocation.html 
     $.webshims.polyfill(); 
     navigator.geolocation.getCurrentPosition(function(pos){ $("#status").html("found you! latitude: "+ pos.coords.latitude +"/longitude: " + pos.coords.longitude); }); 
    </script> 
    </head> 
    <body> 
    <p>Finding your location: <span id="status">checking...</span></p> 
    </body> 
</html> 

它工作在地理位置的本地支持任何瀏覽器,但填充工具似乎沒有做其工作的IE8。我得到下面的錯誤:

Webpage error details

User Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; chromeframe/15.0.874.121; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729) Timestamp: Wed, 7 Dec 2011 17:48:06 UTC

Message: 'navigator.geolocation' is null or not an object Line: 13 Char: 7 Code: 0 URI: ../GeoLocation/jquery.action

我失去的東西,使這個功能正常嗎?

回答

3

您需要先激活填充。看到有下面的腳本在它頭上的示例源:

$.webshims.setOptions('geolocation', { 
      confirmText: '{location} wants to know your position. It is Ok to press Ok.' 
     }); 
     //load all polyfill features 
     //or load only a specific feature with $.webshims.polyfill('feature-name'); 
     $.webshims.polyfill(); 

更新: 此HTML網頁的工作就好了無論是在IE9,IE7和Chrome

<!DOCTYPE html> 
<html> 
    <head> 
    <meta charset=utf-8> 
    <title>Geolocation</title> 
    <script src="http://code.jquery.com/jquery-1.6.4.min.js" type="text/javascript"></script> 
    <script src="http://afarkas.github.com/webshim/demos/js-webshim/minified/extras/modernizr-custom.js" type="text/javascript"></script> 
    <script src="http://afarkas.github.com/webshim/demos/js-webshim/minified/polyfiller.js" type="text/javascript"></script> 
    <script type="text/javascript"> 
     //http://afarkas.github.com/webshim/demos/demos/geolocation.html 
     $.webshims.setOptions('geolocation', { 
      confirmText: '{location} wants to know your position. It is Ok to press Ok.' 
     }); 
     $.webshims.polyfill(); 
     $(function(){ 
     navigator.geolocation.getCurrentPosition(function(pos){ $("#status").html("found you! latitude: "+ pos.coords.latitude +"/longitude: " + pos.coords.longitude); }); 
     }); 
    </script> 
    </head> 
    <body> 
    <p>Finding your location: <span id="status">checking...</span></p> 
    </body> 
</html> 

確保它使用HTTPL服務//而不是FILE://

+0

它給出了相同的錯誤,除了添加的代碼是17行而不是13。 – Risu

+0

我沒有看到添加地理位置選項的行:$ .webshims.setOptions('geolocation',{....}); – Maurice

+0

我沒有更新我的帖子以反映添加它的變化,但我確實將它添加到我的本地來源,因此爲什麼我的行號移動。但它並沒有解決問題。 – Risu

0

也許navigator.geolocation在本地主機上不允許嘗試將其推入www。 :)

+0

那麼,爲什麼它會在Firefox,Chrome和IE9中工作,如果它被本地主機拒絕? – Risu

3

我是webshims lib的創建者。爲了澄清你的問題,這裏有一些信息。

  1. 你並不需要設置的選項來獲得geoloaction工作。這只是一個選項,而不是init代碼。 (設置options in general更多信息)

  2. 是的,你必須初始化你的代碼,如果你只需要geoloaction並沒有其他的功能,你應該使用以下行(更多相關信息約initialiazing features):

    $ .webshims.polyfill( '地理位置');

如果使用不帶任何參數的polyfill方法,將實現所有功能,這將增加下載大小。

  1. Polyfill-Readiness(原因,爲什麼你的腳本不工作)。 Webshims使用一個腳本加載器來實現這些功能,它實現了一切異步,所以你必須等待一個特定的回調。 (約readyness of a feature更多信息)

要麼你等待jQuery的準備回調(這是delaey,直到所有的功能實現:

$(function(){ 
    //use feature here (all features + DOM are ready 
}); 

或者,如果你想盡快訪問功能成爲可能,有一個特殊的準備的回調,這將DOM就緒之前被觸發:

$.webshims.ready('geolocation', function(){ 
    //use geolocation feature here 
}); 

如果您有任何問題或有任何建議,包括如何提高文檔,請讓我知道。