首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么我在我的JavaScript主题中会出现Google错误?

为什么我在我的JavaScript主题中会出现Google错误?
EN

Stack Overflow用户
提问于 2016-11-11 20:42:04
回答 3查看 1.3K关注 0票数 0

在尝试将Google添加到WordPress主题时,我遗漏了一些东西。当我使用插件调试条进行WordPress开发时,它会抛出一个JavaScript错误:

代码语言:javascript
复制
Script error.
line 0

我不知道问题在哪里,在做了研究之后,我认为我的问题是在调用Map的API时没有async defer

代码语言:javascript
复制
<script async defer src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&callback=initMap"></script>

阅读后:

步骤2:添加带有标记的地图

为了解决我认为是问题的问题,我进行了研究,然后偶然发现:

functions.php代码

代码语言:javascript
复制
function call_the_js_files() {  
    if (is_page_template('page-foo.php')) :
        wp_enqueue_script( 'google_api', 'https://maps.googleapis.com/maps/api/js?key=AP_KEY&callback=initMap', array( 'jquery' ), '', true );
        add_filter( 'script_loader_tag', function ( $tag, $handle ) {
            if ( 'google_api' !== $handle )
                return $tag;
            return str_replace( ' src', ' async defer src', $tag );
        }, 10, 2 );
        wp_enqueue_script( 'google_map', get_template_directory() . '/js/google.js', array( 'jquery' ), '', true );
    endif;
add_action( 'wp_enqueue_scripts', 'call_the_js_files' );

google.js代码

代码语言:javascript
复制
( function( $ ) {
    $(function initMap() {
        var uluru = {
            lat: 11111111, 
            lng: 222222222
        };
        var map = new google.maps.Map(document.getElementById('googleMap'), {
          zoom: 15,
          center: uluru
        });
        var iconBase = 'https://maps.google.com/mapfiles/kml/shapes/';
        var marker = new google.maps.Marker({
          position: uluru,
          map: map,
          icon: iconBase + 'parking_lot_maps.png'
        });
        google.maps.event.addDomListener(window, "resize", function() {
           var center = map.getCenter();
           google.maps.event.trigger(map, "resize");
           map.setCenter(center); 
        });
    });
} )( jQuery );

当我查看源时,我得到:

代码语言:javascript
复制
<script type='text/javascript' async defer src='https://maps.googleapis.com/maps/api/js?key=API_KEY;callback=initMap'></script>
<script type='text/javascript' src='site/location/for/js/google.js'></script>

但是我仍然在调试栏中被抛出一个错误。我是不是错过了什么或者做错了什么?我对地图的渲染没有问题,我遇到的唯一问题就是JavaScript错误。在开发工具中,我在Google上的当前API设置设置为None,但受到限制。

当我深入研究google map script error line 0时,我遇到了Onion.js中的Google脚本错误,但我已经在header.php中运行了<meta http-equiv="X-UA-Compatible" content="IE=edge">

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-11-12 22:31:20

使用斯蒂芬的回答,我最终瞄准了wp_footer,并包含了JavaScript,而不是从外部文件中调用它,因为这就是谷歌的例子。

这是代码,我希望它能帮助到其他人:

代码语言:javascript
复制
function call_the_js_files() {  
    if (is_page_template('page-foo.php')) :
    ?>
    <script type='text/javascript'>
    function initMap() {
        var uluru = {
            lat: 11111111, 
            lng: 222222222
        };
        var map = new google.maps.Map(document.getElementById('googleMap'), {
          zoom: 15,
          center: uluru
        });
        var iconBase = 'https://maps.google.com/mapfiles/kml/shapes/';
        var marker = new google.maps.Marker({
          position: uluru,
          map: map,
          icon: iconBase + 'parking_lot_maps.png'
        });
        google.maps.event.addDomListener(window, "resize", function() {
           var center = map.getCenter();
           google.maps.event.trigger(map, "resize");
           map.setCenter(center); 
        }
    </script>
    <?php
        wp_enqueue_script( 'google_api', 'https://maps.googleapis.com/maps/api/js?key=AP_KEY&callback=initMap', array( 'jquery' ), '', true );
        add_filter( 'script_loader_tag', function ( $tag, $handle ) {
            if ( 'google_api' !== $handle )
                return $tag;
            return str_replace( ' src', ' async defer src', $tag );
        }, 10, 2 );
    endif;
add_action( 'wp_footer', 'call_the_js_files' );
票数 0
EN

Stack Overflow用户

发布于 2016-11-12 05:16:29

将您的functions.php更改为包含以下内容。google依赖于您的脚本。

代码语言:javascript
复制
<?php

function theme_js() {

    wp_enqueue_script( 'gmap', '//maps.googleapis.com/maps/api/js?key=YOuR_KEY&callback=initMap', array ('theme_js'), '1.0', true );

    wp_register_script( 'theme_js', get_stylesheet_directory_uri() . '/js/hotelloc.js', array(), '1.0', true );



}

add_action('wp_footer', 'theme_js');


?>
票数 1
EN

Stack Overflow用户

发布于 2016-11-11 21:35:23

好的,我想问题是在

代码语言:javascript
复制
( function( $ ) {
$(function initMap() {

这是抛出一个错误,因为您不能定义这样的函数。替换为

代码语言:javascript
复制
( function( $ ) {
    function  initMap(){
    .....
    }
} )( jQuery );
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40555887

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档