【发布时间】:2012-02-27 09:48:53
【问题描述】:
所有, 我有以下代码:
<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);
使用以下代码填充:
$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";
我的页面在没有 javascript 部分的情况下可以正常加载。但是,当我添加 javascript 时,出现以下错误:
用户代理:Mozilla/4.0(兼容;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) 时间戳:2012 年 2 月 22 日星期三 16:45:35 UTC 消息:Arg:Vector2D 中的非法输入字符串 线路:68 字符:63 代码:0 URI:http://localhost/wordpress/wp-content/themes/parallelus-mingle/assets/css/PIE.htc我实际上进一步缩小了范围,这一行是导致错误的原因:
addLoadEvent(loadMap);
这里是 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>
任何想法为什么会导致错误?
【问题讨论】:
-
这只发生在 IE8 中吗?您使用的是哪个版本的 PIE?您使用的是哪个版本的 GoogleMaps API?您还使用了哪些其他库(除了 PIE)?
-
@pete 它适用于 Firefox、Chrome、Safari 等,因此仅适用于 IE8。我正在使用 PIE 1.0 Beta 3 版(至少我的文件中是这么说的)。我在 Google Maps V3 上,我正在使用 jQuery,Modenizer 来命名一对。