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 回答