我想要为我们的IE8笔记本电脑制作地理定位的多种选择,并且已经调查了谷歌Chrome浏览器框架(它的工作原理)和jquery polyfill(这是我想要的工作)。该示例的网站是webshims,我已经验证了所提到的演示页面在IE8中工作,但我无法为自己重新创建示例。这是我的jsp:
<%@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>
它适用于本地支持地理定位的任何浏览器,但是polyfill似乎没有为IE8做它的工作。我收到以下错误:
网页错误详情
用户代理:Mozilla / 4.0(兼容; MSIE 8.0; Windows NT 5.1; 三叉戟/ 4.0; chromeframe / 15.0.874.121; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)时间戳:2011年12月7日星期三17:48:06 UTC
消息:'navigator.geolocation'为null或不是对象Line:13 字符:7代码:0 URI:../ GeoLocation / jquery.action
我是否遗漏了使这项功能正常的事情?
答案 0 :(得分:3)
您需要先激活polyfill。请参阅其中包含以下脚本的示例源:
$.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://
来提供服务答案 1 :(得分:3)
我是webshims lib的创建者。为了澄清你的问题,这里有一些信息。
您无需设置选项即可进行地理定位。这只是一个选项,而不是init代码。 (有关设置options in general)的更多信息
是的,您必须初始化您的代码,如果您只需要地理位置而不需要其他任何功能,则应使用以下行(有关initialiazing features的更多信息):
$ webshims.polyfill( '地理位置');
如果使用不带任何参数的polyfill方法,将实现所有功能,这会增加下载大小。
要么等待jQuery的准备回调(这是delaey直到所有功能都已实现:
$(function(){
//use feature here (all features + DOM are ready
});
或者,如果您想尽快访问您的功能,则会有一个特殊的就绪回调,它将在DOM-Ready之前触发:
$.webshims.ready('geolocation', function(){
//use geolocation feature here
});
如果您有任何问题或任何建议,包括如何改进文档,请告知我们。
答案 2 :(得分:0)
在localhost尝试推送到www时,不允许navigator.geolocation
。 :)