Javascript 如何捕获google maps的无效API密钥

Javascript 如何捕获google maps的无效API密钥,javascript,google-maps,Javascript,Google Maps,我有以下代码: <script src="http://maps.google.com/maps?file=api&amp;v=2&amp;sensor=false&amp;key=babab" type='text/javascript'></script> 如果密钥无效,则会弹出一个警报,但我想在这种情况下执行一些操作。不过我不知道该怎么做。有什么想法吗?谷歌没有提供检查谷歌地图API密钥的外部方法。因此,您不能用例如“此代码有效吗ab

我有以下代码:

<script src="http://maps.google.com/maps?file=api&amp;v=2&amp;sensor=false&amp;key=babab" type='text/javascript'></script> 


如果密钥无效,则会弹出一个警报,但我想在这种情况下执行一些操作。不过我不知道该怎么做。有什么想法吗?

谷歌没有提供检查谷歌地图API密钥的外部方法。因此,您不能用例如“此代码有效吗
abcde1234
”来查询某些服务,并获得
TRUE
/
FALSE
响应

关于这个问题有一个讨论。但我建议你看一篇来自美国的帖子。这是一个实际执行神奇验证的函数——它到底是做什么的,比如从你的Google帐户/域创建一个哈希——我们不知道

对于检查提供的API密钥是否正确的问题,我看到了两种解决方案:

  • 使用一些自定义代码覆盖传入警报(检查警报内容,或检查页面加载后X秒内是否出现警报)
  • 以某种方式使用
    GValidateKey
    函数事先验证密钥。也许您可以在引用API Javascript之前调用它?对我来说,听起来有点像黑客
  • 你可能会遇到的问题是,你不知道谷歌实际上检查了什么。推荐人、推荐站点、主机-多种可能性(不是服务器的IP地址,而是名称和一些附加信息)。

    对于现代浏览器(IE9+和其他浏览器),您可以使用。只需将事件处理程序添加到传递给映射构造函数的元素:

    var map = new google.maps.Map(element, myOptions);
    
     element.addEventListener("DOMNodeRemoved", function(e){
       if (e.target === element){
         //your code here
         element.removeEventListener("DOMNodeRemoved", mapWasRemovedHandler, true);
       }
     }, false);
    

    我刚刚遇到了在使用无效API密钥时执行操作的需要。谷歌的文档:

    如果您想以编程方式检测身份验证失败(例如自动发送信标),可以准备回调函数。如果定义了以下全局函数,则在身份验证失败时将调用该函数

    这就是我所需要做的:

    function gm_authFailure() { // Perform action(s) }
    

    嗯,很有趣。我认为GMAP没有一个机制来检查这一点。您可以尝试包装
    alert()
    并解析文本(以查看是否是错误消息),但这看起来像是一个难看的破解。将alert函数分配给一个变量,在脚本包含之前用其他函数替换alert函数,并在包含完成后将其替换回来……感谢一些好信息。我并不想知道给定的API密钥是否有效,更重要的是,如果设置不正确,我需要处理错误,并且适当地不要尝试调用map对象上的一堆东西(不存在)以及调用其他google方法。使用GMaps版本3,您不再需要密钥(!)。老实说,我认为你不应该检查是否加载了GMaps Javascript,你应该检查初始GMap对象是否可用,然后从那里开始(例如),你会喜欢使用V3,但我们的大多数用户使用IE6,并且它不兼容:(这对于捕获所有类型的API密钥异常非常有效。如果您希望以不同的方式处理每种类型的错误,那么我会这样做