All, Tôi đã có đoạn mã sau:Javascript/Google Maps gây ra lỗi PIE.htc
<script type="text/javascript">
function Store(lat, long, text)
{
this.latitude = lat;
this.longitude = long;
this.html = text;
}
var myStores = [<?php echo $jsData;?>, null];
addLoadEvent(loadMap);
này là dân cư với đoạn mã sau:
$lat = $post->latitude;
$long = $post->longitude;
$post_id = $post->ID;
$get_post_info = get_post($post_id);
$name = $get_post_info->post_title;
$jsData = $jsData . "new Store($lat, $long, '$name'),\n";
My trang tải tốt mà không có phần javascript. Tuy nhiên khi tôi thêm javascript tôi nhận được lỗi sau:
User Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.3; .NET4.0C; .NET4.0E; MS-RTC LM 8; AskTbAD2/5.14.1.20007) Timestamp: Wed, 22 Feb 2012 16:45:35 UTC Message: Arg: Illegal input string in Vector2D Line: 68 Char: 63 Code: 0 URI: http://localhost/wordpress/wp-content/themes/parallelus-mingle/assets/css/PIE.htc
Tôi thực sự thu hẹp nó xuống hơn nữa và dòng này là một trong những gây ra lỗi:
addLoadEvent(loadMap);
Đây là mã hoàn chỉnh cho addLoadEvent (loadMap):
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script>
<script type="text/javascript">
function addLoadEvent(func) {
var oldonload = window.onload;
if (typeof window.onload != 'function'){
window.onload = func
} else {
window.onload = function() {
oldonload();
func();
}
}
}
var map,
infowin=new google.maps.InfoWindow({content:'moin'});
function loadMap()
{
map = new google.maps.Map(
document.getElementById('map'),
{
zoom: 12,
mapTypeId:google.maps.MapTypeId.ROADMAP,
center:new google.maps.LatLng(<?php echo $_SESSION['pav_event_latitude']; ?>,
<?php echo $_SESSION['pav_event_longitude']; ?>)
});
addPoints(myStores);
}
function addPoints(points)
{
var bounds=new google.maps.LatLngBounds();
for (var p = 0; p < points.length; ++p)
{
var pointData = points[p];
if (pointData == null) {map.fitBounds(bounds);return; }
var point = new google.maps.LatLng(pointData.latitude, pointData.longitude);
bounds.union(new google.maps.LatLngBounds(point));
createMarker(point, pointData.html);
}
map.fitBounds(bounds);
}
var number = 2; // or whatever you want to do here
function createMarker(point, popuphtml)
{
var popuphtml = "<div id=\"popup\">" + popuphtml + "<\/div>";
var marker = new google.maps.Marker(
{
position:point,
map:map,
icon:'https://chart.googleapis.com/chart?chst=d_map_pin_letter&chld='+number+'|FF776B|000000',
shadow:'https://chart.googleapis.com/chart?chst=d_map_pin_shadow'
}
);
google.maps.event.addListener(marker, 'click', function() {
infowin.setContent(popuphtml)
infowin.open(map,marker);
});
}
</script>
Bất kỳ ý tưởng nào sẽ gây ra lỗi?
Điều này chỉ xảy ra trong IE8? Bạn đang sử dụng phiên bản PIE nào? Bạn đang sử dụng phiên bản API GoogleMaps nào? Bạn đang sử dụng thư viện nào khác (ngoài PIE)? – pete
@pete Nó hoạt động trong Firefox, Chrome, Safari v.v. vì vậy chỉ cần IE8. Tôi đang sử dụng phiên bản 1.0 Beta 3 của PIE (ít nhất đó là những gì nó nói trong tập tin của tôi). Tôi đang sử dụng Google Maps V3 và tôi đang sử dụng jQuery, Modenizer để đặt tên cho một cặp vợ chồng. – user1048676