2

ページで infoBox.open メソッドを呼び出そうとすると、以下のエラーが発生します。

Microsoft JScript ランタイム エラー: プロパティの値が無効です: [オブジェクト オブジェクト]

以下は私が使用しているコードです。

        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. ウィンドウのスコープ内で変数「マップ」を宣言しない
  2. ドキュメント内のどこかに、IDが「map」の要素、またはIDが「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は、変数が作成される前に解析されます。変数fooを作成しようとすると、IEで失敗します。これは、グローバルスコープでアクセス可能なinput#fooへの参照がすでに存在するためです。アラートは、input#foohttp ://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 に答える