3

私の関数が定義されていないという問題がありますが、Firefox でのみですが、Chrome では完全に動作します。なぜこれを行っているのかわかりません。これは、Firefox のアップデートか何かが必要なためでしょうか? 助けてください。

 bindInfoW(marker, content, infowindow);

 function bindInfoW(marker, content, infowindow) {
     google.maps.event.addListener(marker, 'click', function (){
         infowindow.setContent(content);
         infowindow.open(map, marker);
     });
 }  
4

5 に答える 5

4

Firefox は他のブラウザよりも少し厳しいので、呼び出す前に関数を定義する必要があります:

function bindInfoW(marker, content, infowindow)
{
    google.maps.event.addListener(marker, 'click', function() {
        infowindow.setContent(content);
        infowindow.open(map, marker);
    });
}   

bindInfoW(marker, content, infowindow);
于 2013-09-09T07:35:46.977 に答える
1

これは、javascript ホイスト機能によるものだと思います。ブロック (関数またはグローバル スコープ) の先頭に必要なものをすべて宣言してから使用することをお勧めします。ここで
いくつかの例を見つけることができますか

あなたの関数(bindInfoW)はJavaScriptで巻き上げる必要がありますが、これがFFで機能しない理由がわかりません

于 2013-09-09T07:41:46.843 に答える
0

定義後に関数を呼び出します。

于 2013-09-09T07:33:46.333 に答える
0

このコードを試してください:

 function bindInfoW(marker, content, infowindow) {
     google.maps.event.addListener(marker, 'click', function (){
         infowindow.setContent(content);
         infowindow.open(map, marker);
     });
 }  
 bindInfoW(marker, content, infowindow);
于 2013-09-09T07:36:05.573 に答える
0

Firefox は関数をブロックに巻き上げません。関数宣言を if/else ブロックの外に置くと、元の順序で機能するはずです。

この問題の詳細: http://statichtml.com/2011/spidermonkey-function-hoisting.html

于 2017-03-06T16:48:32.543 に答える