2

当我尝试在我的页面中调用 infoBox.open 方法时出现以下错误。

Microsoft JScript 运行时错误:属性值无效:[object Object]

以下是我正在使用的代码。

        var myInfoOptions = {                        
                content: 'Test'//$extradiv.html()
                , closeBoxMargin: "12px 2px 2px 2px"
                , closeBoxURL: '/Images/infowindow-close.gif'
                };

                var ib = new InfoBox(myInfoOptions);
                var info_Marker = new google.maps.Marker({
                    position: new google.maps.LatLng(e.latLng.lat(), e.latLng.lng())
                });
                info_Marker.setMap(null);
                ib.open(map, info_Marker);

我已经在全局范围内声明了 Map 对象并将数据绑定如下。

   var myOptions = {
            zoom: 5,
            center: latlng,
            mapTypeId: google.maps.MapTypeId.ROADMAP
        }
        map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);

希望快速响应。

谢谢,
卡利安巴萨

4

1 回答 1

1

只是一个猜测:

  1. 您没有在窗口范围内声明变量“map”
  2. 文档内的某处是ID为“map”的元素或名称为“map”的表单、图像、锚点等

会发生什么:IE

问题来了:当你在元素被解析之前不声明变量时,你不能覆盖对元素的引用。

为了更好地理解的演示:

尝试#1:

<input id="foo" type="button" value="click me to see foo's type-property" onclick="fx()">    
<script>
function fx()
{
   alert(foo.type);
}

window.onload=function()
{
   foo={type:'this is the type-property of the foo-variable'};
}
</script>

...在创建变量之前解析 input#foo。在 IE 中创建变量 foo 的尝试将失败,因为已经存在对全局范围内可访问的 input#foo 的引用。警报将返回“按钮”,输入类型#foo
http://jsfiddle.net/doktormolle/kA9nb/

尝试#2:

<script>
var foo;

function fx()
{
   alert(foo.type);
}

window.onload=function()
{
   foo={type:'this is the type-property of the foo-variable'};
}
</script>
<input id="foo" type="button" value="click me to see foo's type-property" onclick="fx()">

如您所见,变量 foo 在解析 input#foo 之前在全局范围内声明。IE 现在不会创建对 input#foo 的全局引用,并且一切都按预期工作:http:
//jsfiddle.net/doktormolle/88QV8/

所以解决方案:在全局范围内声明变量“map”。

于 2012-06-07T18:39:04.610 回答