如何修复以下控制台错误。
Loading the Google Maps JavaScript API without a callback is not supportedInvalidValueError: not an instance of HTMLInputElement由于上述错误,我的职位没有显示在 Google 搜索结果中。
我不是开发人员,所以我需要建议来解决这个问题。我将在我的 WordPress 网站中进行必要的更改。
Lin*_*y D 189
用作noopFunction.prototype回调来快速消除错误消息。
https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&callback=Function.prototype
Run Code Online (Sandbox Code Playgroud)
根据Google Maps API 文档,该callback参数已经被需要很长时间了。然而,实际上,谷歌最近(在过去几天内)才开始执行这一要求。
虽然它似乎没有破坏任何东西,但它现在在控制台中显示一条丑陋的错误消息......
不支持在没有回调的情况下加载 Google Maps JavaScript API。
简短的答案是指定一个callback值。设置外部 API 库加载完成后您想要触发的 JavaScript 函数的名称。
https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&callback=FUNCTION_NAME
Run Code Online (Sandbox Code Playgroud)
请注意,您必须指定真实的函数名称!否则,您将触发“不是函数”错误消息,并且只是用一个错误消息交换另一个错误消息。
如果您实际上没有在库加载后立即运行的回调函数,则可以将其用作noopFunction.prototype替代。
https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&callback=Function.prototype
Run Code Online (Sandbox Code Playgroud)
该Function.prototype方法是 JavaScript 原生的,并且绝对不执行任何操作...这正是您在这种情况下所需要的!
有关 的更多信息Function.prototype,请参阅这个不相关的 SO 线程...
小智 6
我实际上创建了一个 noop 函数,这样我就可以跟踪它的调用时间。
function gmNoop() { console.log('GMap Callback') }
Run Code Online (Sandbox Code Playgroud)
然后将其添加到我的 Google 地图 API 资源请求中。
https://maps.googleapis.com/maps/api/js?key='.GOOGLEMAPSKEY.'&callback=gmNoop
Run Code Online (Sandbox Code Playgroud)
我需要这个的原因是因为我的应用程序在其他先决条件之后调用 initMap() 。在这些其他资源之前调用 initMap() 将加载没有标记的地图。
小智 1
我刚刚发现这个视频可能对您有帮助:
https://www.youtube.com/watch?v=1asukrHEqMM&ab_channel=KnowledgeBase
它对我没有多大帮助,因为我的问题略有不同,但让我知道了该走什么路。希望它对您有帮助。祝你好运
::::::::::编辑::::::::::
基本上,要消除此错误,您需要做的是在运行进行 API 调用的脚本之前声明函数(又名 initMap)。
initMap 函数是创建谷歌地图并赋予其特征等的函数。
initMap 函数如下所示:
function initMap(): void {
map = new google.maps.Map(document.getElementById("map") as HTMLElement, {
center: { lat: -34.397, lng: 150.644 },
zoom: 8,
});
}
Run Code Online (Sandbox Code Playgroud)
API 调用是我们放置 API-KEY 的脚本行。
<script defer type="text/javascript" src="https://maps.googleapis.com/maps/api/js?key=API-KEY&libraries=places&callback=initMap"></script>
Run Code Online (Sandbox Code Playgroud)
我找到了两种方法来做到这一点,第一种方法是:有一个模块,您只需在 API 之前使用 src 脚本调用该模块。
例子:
<html>
<head>
<script defer src="js/scripts.js" type="module"></script>
<script src="js/module/google.js"></script>
<script defer type="text/javascript" src="https://maps.googleapis.com/maps/api/js?key=API-KEY&libraries=places&callback=initMap"></script>
</head>
<body></body>
</html>
Run Code Online (Sandbox Code Playgroud)
google.js 提供了 initMap() 函数的保护
第二种方法是:在调用 API 之前将所有代码写入脚本标记内。
例子:
<html>
<head>
<script defer src="js/scripts.js" type="module"></script>
<script>
function initMap(): void {
map = new google.maps.Map(document.getElementById("map") as HTMLElement, {
center: { lat: -34.397, lng: 150.644 },
zoom: 8,
});
}
</script>
<script defer type="text/javascript" src="https://maps.googleapis.com/maps/api/js?key=API-KEY&libraries=places&callback=initMap"></script>
</head>
<body></body>
</html>
Run Code Online (Sandbox Code Playgroud)
请注意,我使用defer以便代码在页面底部加载,这只是我的风格,因为我喜欢在 head元素中声明所有内容。
| 归档时间: |
|
| 查看次数: |
82452 次 |
| 最近记录: |