Таинственный объект не поддерживает этот метод в IE8 на google.load - PullRequest
1 голос
/ 17 марта 2012

Я использую Google Search JSAPI в моем приложении для локального поиска.Все отлично работает во всех браузерах, кроме IE 8. Проблема в том, что после конкретной строки кода мой базовый объект jquery и объекты Google ссылаются.

Это простой код.Я могу воспроизвести проблему, используя этот jsfiddle .

HTML-код

<html>
    <head>
        <title>Test Map</title>
        <script src="http://www.google.com/jsapi?" type="text/javascript"></script>

    </head>
    <body>
        <div id="map_canvas"></div>
    </body>
</html>

и JS

$(function() {
    alert(1);
    google.load('search',1);
    alert($);

    google.setOnLoadCallback(function() {       
        alert(2);
    });
});

после строки google.load('search',1) я получил следующую ошибку

Error: Object doesn't support this property or method

на $ и google.

Это просто кошмар.Я борюсь с этим часами без удачи.У каких-нибудь экспертов по IE ​​есть идея?

Ответы [ 3 ]

1 голос
/ 17 марта 2012

Эта проблема вызвана document.write в Google load API, аналогично этому вопросу . Сценарий отложен, как показано на рисунке ниже:

enter image description here

Чтобы решить эту проблему, не переносите код в обработчике onload / domready.

<script src="http://www.google.com/jsapi?" type="text/javascript"></script>
<script>
// All load-related invocations have to be placed here.
google.load('search',1);
google.setOnLoadCallback(function() {       
    alert(2);
});
</script>

Обратите внимание, что JSfiddle размещает любой контент в верхнем левом углу внутри тегов <body>. Таким образом, простая копирование-вставка кода в JSFiddle не даст правильных результатов.

1 голос
/ 17 марта 2012

Измените ваш jsFiddle на "No wrap (body)" и измените свою функцию следующим образом ...

//$(function() {
    //alert(1);
    google.load('search',1);
    alert($);

    google.setOnLoadCallback(function() {       
        alert(2);
    });
//});

Почти тот же вопрос, что и здесь: Google не определен с помощью Google Visualization API; возможно, ошибка jQuery

0 голосов
/ 29 сентября 2015

Я столкнулся с такими же проблемами. Вот разрешение.

Если вы хотите использовать API визуализации Google в JQuery.Пожалуйста, следуйте нижеприведенному подходу

<script type="text/javascript">
//Load the Google visualization library
google.load("visualization", "1.1", {packages:["bar"]});
$(document).ready(function() {
     google.setOnLoadCallback(function () {
        $('#Search').click(sendAndDraw);
     });

     $("#Search").click(function (e) {
     var data = google.visualization.arrayToDataTable([
         ['Technology', 'Beginner', 'Intermediate', 'Expert'],
         ['Java', 10, 40, 20],
         ['DOT NET', 11, 46, 25],
         ['Mainframe', 66, 11, 30],
         ['Oracle', 10, 50, 30]
       ]);


    var options = {
      chart: {
        title: 'Management Reports',
        subtitle: 'Classification of resources',
      }
    };

    var chart = new google.charts.Bar(document.getElementById('chart_div'));

    chart.draw(data, options);

});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...