2011-12-07 9 views
1

私はIE8ラップトップのジオロケーションを作成するための複数のオプションを望んでおり、Google Chrome Frame(動作している)とjquery polyfill(私が働くことを試みているもの)の両方を調べました。例が得られたウェブサイトはwebshimsであり、前述のデモページがIE8で動作することを確認しましたが、自分で例を再作成することはできません。Webshims、IE8、Geolocation

<%@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のためにその仕事をやっているようには見えません:これは私のjspです。以下のエラーが表示されます。

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ページには、それがHTTPL使用して奉仕することを確認してください

<!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> 

IE9、IE7とChrome

の両方でうまく動作します//ではなくFILE://

+0

同じエラーが表示されます。追加されたコードで13の代わりに17行目が保存されます。 – Risu

+0

ジオロケーションオプションを追加した行が表示されませんでした:$ .webshims.setOptions( 'geolocation'、{....}); – Maurice

+0

私は自分の投稿を更新してその変更を反映させていませんでしたが、ローカルソースに追加しました。しかしそれは問題を解決しませんでした。 – Risu

0

navigator.geolocationはlocalhostで許可されていない可能性があります。 :)

+0

Firefox、Chrome、IE9でlocalhostで許可されていなかったのはなぜでしょうか? – Risu

3

私はwebshimsの作成者です。あなたの問題を明確にするために、ここにいくつかの情報があります。

  1. ジオオロジー作業を行うためのオプションを設定する必要はありません。これはオプションであり、initコードではありません。 (options in generalを設定するための詳細)

  2. はい、あなただけgeoloactionやその他の機能のどれが必要な場合、あなたは次の行(詳細に関する情報についてinitialiazing features)を使用する必要があり、あなたのコードを初期化する必要があります。

    $を.webshims.polyfill( 'geolocation');

引数なしで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 
}); 

ご質問やドキュメントを改善する方法、などの提案があれば、私に知らせてください。