本文介绍了使用bind(this)在IE8中的Google地图v3上添加事件的问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

以下代码在Chrome和IE 9中运行良好。但在IE 8中断。

This code below works fine in Chrome and IE 9. But breaks in IE 8.

错误的行在这里。我认为这是绑定。

The errant line is here. I think it's the bind.

google.maps.event.addListener(this.map, "click", (this.leftClick).bind(this));

还有其他人有这个问题吗?目前尚不清楚是否有人这样做。

Has anyone else had this problem? It's not clear if someone has this on SO.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<style>
    html, body, #map
    {
        margin: 0;
        padding: 0;
        height: 100%;
        width: 100%;
    }
</style>

<script src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.7.1.js"></script>
<script src="http://maps.googleapis.com/maps/api/js?libraries=geometry,drawing&sensor=true" type="text/javascript"></script>
<script language="javascript">

    var MyPage = function () {
        this.map = null; //google map
    };

    MyPage.prototype.initialize = function () {
        this.map = new google.maps.Map(document.getElementById("map"),
        {
            zoom: 8,
            center: new google.maps.LatLng(30, -97),
            mapTypeId: google.maps.MapTypeId.ROADMAP
        });

        google.maps.event.addListener(this.map, "click", (this.leftClick).bind(this));
    }

    MyPage.prototype.leftClick = function (event) {
        alert('hi');
    }

    $(window).load(function(){
        var my = new MyPage();
        my.initialize();
    });

</script>
</head>
<body>
<div id="map"></div>
</body>
</html>


推荐答案

IE8或以下版本不支持bind方法

the bind Method is not supported in IE8 or below see http://msdn.microsoft.com/en-us/library/ff841995(v=vs.94).aspx

这篇关于使用bind(this)在IE8中的Google地图v3上添加事件的问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-24 19:08