Клуб API Карт

Найдено на тему «поиск ошибок»:
Uncaught SyntaxError: Unexpected token yandex.metrika ошибка в счетчике - "Строка 654 - (function (d, w, c) );"
Arthur Contrast
18 октября 2017, 11:12

Привет, после вставки счетчика на сайт. Почему то выходит вот такая ошибка? В чем может быть проблема? 

Uncaught SyntaxError: Unexpected token

yandex.metrika 

ошибка в счетчике - "Строка 654 - (function (d, w, c) );"

6 комментариев
поиск ошибок
Проблемы с геокодером в Firefox
Oleg Levshin
24 сентября 2012, 13:15

Собственно, во всех остальных браузерах и даже в Ишачке - все ок, а вот в ФФ какая-то непонятность. Адрес сайта:

http://капитал-23.рф/okomplekse

и проскроллить до карты. Имеется массив объектов, где адрес указывается в одном из полей. Итерируем массив и отправляем каждый объект геокодеру, получая при этом результат. К сожалению, дальше с результатом работать не выходит - кричит, что "TypeError: result.geoObjects.get(0) is null".

8 комментариев
геокодирование,API 2.0,поиск ошибок
Победа над ошибками ч.2
dimik
23 мая 2012, 21:40
Победа над ошибками ч.2
Привет всем читателям блога и участникам клуба!

Сегодня мы продолжим свой рассказ о том, как эффективно искать ошибки в JavaScript-коде, используя «Инструменты разработчика» и API Яндекс.Карт. Для своих тестовых целей мы будем решать простую задачу. Допустим, мы хотим отметить центр карты меткой с соответствующей надписью.



<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Поиск ошибок</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<script src="http://api-maps.yandex.ru/2.0.8/?load=package.full&lang=ru-RU&mode=debug" type="text/javascript"></script>
<script type="text/javascript">
var map;
ymaps.ready(function () {
    map = new ymaps.Map('YMapsID', {
        center: [55.7, 37.5], zoom : 9
    });
});
function showMapCenter() {
    console.log('in showMapCenter');
    addPlacemarkOnMap(createCenterPlacemark());
    function createCenterPlacemark() {
        console.log('in createCenterPlacemark');
        return new ymaps.Placemark(map.getCenter(), { balloonContent : 'Центр карты' });
    }
   
    function addPlacemarkOnMap(placemark) {
        console.log('in addPlacemarkOnMap');
        map.geoObjects.add(placemark);
    }
}
showMapCenter();
</script>
</head>
<body>

</body>

</html>



Для отладки нашего функционала мы будем использовать «Инструменты разработчика», которые идут в комплекте с Google Chrome и Яндекс.Интернет.



«Инструменты разработчика» имеют несколько полезных вкладок.
Для задач отладки JavaScript-кода мы будем использовать вкладку «Script».



При выборе этой вкладки под ней в левом углу появляется выпадающий список JavaScript-ресурсов используемых на странице, включая тот JavaScript-код что написан на самой странице, и стрелочки «<» и «>» для их последовательного просмотра.

Например, на рисунке выбран файл combine.xml — сборка всех пакетов (package.full) API Яндекс.Карт.
И если указать магический параметр &mode=debug при подключении API Яндекс.Карт в тэге script, то весь код АПИ приходит к нам в непожатом виде, да еще и документированный JSDoc-ом и это очень здорово.
Щелкнув мышкой на номере нужной нам строчки кода, мы можем поставить точку- флаг (breakpoint) которая остановит выполнение скрипта в этой точке, и поможет оценить наличие и значения всех необходимых для выполнения функции параметров и их значений.



При установке breakpoint-ов справа открывается дополнительная панель:



1. Watch Expression — вы можете добавить на эту панель имя переменной или написать свое выражение JavaScript, которое будет выполнено при остановке.
2. Call Stack — последовательность вызовов функций, до позиции в которой произошла остановка скрипта.
3. Breakpoints — удобный менеджер точек останова, который позволяет включать или отключать некоторые из них, не удаляя их. А также подсвечивает точку в которой остановились.

В самом верху, над описанными панелями есть небольшой, но очень полезный тулбар, позволяющий после остановки скрипта производить навигацию по следующим вызовам методов и JavaScript-выражений.

Давайте рассмотрим функционал его кнопок, слева направо:



1. Кнопка «Pause script execution» (Остановить выполнения скрипта), позволяет продолжить или остановить его выполнение до следующей точки останова (если есть) или до его полного выполнения.
2. Кнопка «Step over next function call» (Перепрыгнуть к вызову следующей функции) — позволяет выполнить текущую функцию и остановить выполнение перед вызовом следующей функции.
3. «Step into next function call» — позволяет «проваливаться» в код функции, что полезно если именно в этой функции происходит ошибка. Можно пошагово перемещаться по выполняющимся в ней операциям, контролировать возвращаемые ими значения, включая объекты области видимости «Scope Variables» на вкладке справа.



4. «Step out of current function» — выйти из текущей функции. Десантирует вас в
scope внешней функции относительно той, в которую вы провалились.
5. «Deactivate all breakpoints» — отключить все точки. Отключить, но не стереть — просто их галочки uncheck-аются на левой панели «Breakpoints».

Итак, давайте откроем консоль и попробуем загрузить нашу тестовую страницу.

Мы получили ошибку в строке 25
TypeError: cannot call method 'getCenter' of undefined

... ну вот, опять 25! =(
Но не унываем и ставим breakpoint на строку «25».

Для этого щелкнем на номер 25 строки на которую ругается консоль, на номере должен появиться синий флажок:



Если у вас открыт редактор кода, то вместо установки breakpoint-а в браузере вы можете добавить в ваш код в нужной строчке «debugger;» и это отработает аналогично.

Перезагружаем страницу в браузере и выполнение нашего JavaScript-сценария должно остановиться на строке 25 непосредственно перед ошибкой. Наводя курсор мыши на объекты, можно посмотреть их методы и значения полей. Например, объект ymaps в нашей сроке определен и имеет 2 метода.



Однако сама карта не определена:



Чтобы выяснить причину, давайте поставим breakpoint на строку кода,
где у нас происходит инициализация карты (строка 13) и еще раз перезагрузим страницу:



Как стало видно инициализация карты не успевает произойти, так как функция, переданная в ymaps.ready, отработает после нашей showMapCenter.

Чтобы исправить ситуацию, перенесем вызов showMapCenter в этот обработчик:


ymaps.ready(function () {
map = new ymaps.Map('YMapsID', {
center: [55.7, 37.5], zoom : 9
});
showMapCenter();
});


Сейчас при перезагрузке страницы все отработает в нужной последовательности и карта отобразится.

Теперь мы знаем что «Инструменты разработчика» и API Яндекс.Карт помогают побеждать ошибки!

Cпасибо за внимание.
Javascript,статьи,поиск ошибок
День победы над ошибками
dimik
12 мая 2012, 13:08
День победы над ошибками
Поздравляем всех участников клуба с прошедшим днем победы!

Чтобы поддержать тему праздника, давайте проведем свой парад самыx современных вооружений веб-разработчика: тех, что делают поиск ошибок в JavaScript коде не чем-то магическим, а вполне предсказуемым и контролируемым процессом.

Тем, кто не представляет своей работы без методов класса Console, и тем, кто всё еще сражается с ошибками с кремниевым топором alert()-ов, хотим представить краткий обзор полезного инструмента, который де-факто является стандартом, описан в CommonJS и уже реализован во всех современных браузерах в виде Firefox Firebug, Opera Dragonfly или Chrome Developer Tools.

Сейчас это особенно актуально, ведь в API Яндекс.Карт 2.0 появилась возможность работать с API в режиме debug (при подключении API нужно указать в урле параметр mode=debug).
 
Для веб-разработчиков, использующих API Яндекс.Карт, это важно прежде всего потому, что теперь при отладке кода можно понять, что и где сделано не так.


В качестве примера мы рассмотрим Chrome Developer Tools, или в переводе «Инструменты разработчика».



Именно это расширение стоит использовать по ряду причин: во-первых, оно интегрировано в браузер, а не является аддоном как Firebug, а, во-вторых, оно, как и сам Chrome, работает быстрее, чем Firefox+Firebug, и потребляет меньше памяти.

Возможности, которые предоставляет этот инструмент

Для начала давайте рассмотрим в нем сам объект «console».



Вывод сообщений в консоль:
console.log(Object [, Object ...]
Принимает объект или строку с паттернами (%s — строка, %i (%d) — число, %f — число с плавающей точкой (форматирование не поддерживается), %o —- ссылка на объект)
Если вы передаете строку для подстановки и больше аргументов, то лишние аргументы будут склеены в строку через пробел.
Дополнительные методы (полностью аналогичны log) лишь для разделения уровней логирования:
console.info(Object [, Object ...]
console.warn(Object [, Object ...]
console.error(Object [, Object ...]



Также у Chrome Developer Tools есть поддержка Firebug Command Line API.

Селекторы:
$('id'), не путать с jQuery-селектором — этот метод возвращает элементы только по id.
$$('selector') — позволяет искать элементы в DOM. формат selector соответствует формату querySelectorAll.
$x('xpath', context) — позволяет искать элементы в DOM по xpath выражению (по сути — обертка над document.evaluate).

Печать объектов (в этих методах идентификатор id передается не как строка, а как ссылка на объект):
inspect(id) — очень полезный хэлпер — открывает панель «Elements» и отображает в ней найденный по селектору элемент, в правой панельке показывает его стили.
dir(id) — делает дамп элемента в виде JavaScript-объекта с полями.
dirxml(id) — делает дамп элемента ввиде HTML-дерева.



keys(object) — возращает массив имен полей объекта.values(object) — возвращает массив значений полей объекта.

События
monitorEvents(object, [type]) — подписывает консоль на все или определенные события объекта. В параметре type можно передать массив событий, на которые необходимо подписаться.

Также поддерживаются группы событий
mouse: mousedown, mouseup, click, dblclick, mouse move, mouseover, mouseout, mousewheel.
key: keydown, keyup, keypress, textInput
touch: touchstart, touchmove, touchend, touchcancel
control: resize, scroll, zoom, focus, blur, select, change, submit, reset
Если type не указан, консоль подписывается на все типы событий объекта.
Пример: monitorEvents(window, ['mouse', 'key']

unmonitorEvents(object, [type]) — отписывает консоль от событий.

Группировка сообщений:
console.group('Имя группы сообщений');
console.groupEnd(



Профилирование:
console.time('title') — хелпер для определения времени выполнения.
console.timeEnd()
console.profile('title') — профайлер кода (показывает в отчете, что и сколько раз выполнялось, сколько времени потребовало).
console.profileEnd()

Отладка:
console.trace() — при вызове внутри функции печатает в консоль всю последовательность вызовов.
debugger; - очень полезный хэлпер, останавливает выполнение скрипта в текущем scope (аналог установки breakpoint-а).

Прочее:
clear() — очищает консоль

Панели:



На основной панели Chrome Developer Tools есть очень полезные вкладки:
Elements — отображает DOM-структуру документа.
Resources — ресурсы, используемые документом (cookies, LocalStorage и т.п.).
Network — назаменима для отладки AJAX вызовов и вообще полезная штука — отображает заголовки запросов и ответов, скорость загрузки файлов и т.п.
Script — позволяет просматривать все JavaScript-файлы, используемые на странице, ставить у них точки останова (BreakPoints) и производить навигацию по стеку вызовов.

Желаем вам удачи в ваших сражениях с ошибками. С таким оружием, победа будет за вами!

В следующей статье, посвященной работе над ошибками, мы подробно расскажем об использовании вкладки Script для отладки и поиска ошибок в JavaScript-коде.

Список литературы:
http://habrahabr.ru/post/50445/
http://www.ieinspector.com/dominspector/manual/index.html?consoleapi.htm
http://www.opera.com/dragonfly/
http://getfirebug.com/wiki/index.php/Command_Line_API

Javascript,статьи,поиск ошибок
Браузер Android (встроенный на 2.3.3 и на 3.0 + Dolphin) не отображает полигоны
internetmarketologi
22 февраля 2012, 11:49

Сначала думали, что это мы чего-то не докрутили, но потом посмотрели на эталонный пример http://api.yandex.ru/maps/jsapi/examples/mappolygon.html в браузере Android`а и поняли, что проблема не на нашей стороне.

 

В любом настольном браузере полигоны отображаются нормально: 

 

На Андройде полигонов не видно (хотя видно наложенные текстовые метки, балуны):

 

 

Читателей сообщества прошу, при возможности, проверить проблему и подтвердить или опровергнуть в комментариях.

1 комментарий
mobile,полигон,поиск ошибок
Запакованные многоугольники, Chrome, отображаются рандомом
konstantikirillov
5 января 2012, 23:13

Есть такой вопрос в FAQ про IE6, но почти тоже самое наблюдаю на Хроме 17.0.963.12 dev. Не очень сложный многоугольник (https://gist.github.com/1566708) то отображается нормально (с заливкой), то получается незамкнутым и одна из сторон начинается где-то в Норвегии, то вообще падает с DOM Exception: 5. А ведь это всего-то маленькая Чехия.

Может в документации не указаны  какие-то особенности?

полигон,ломаная,поиск ошибок
Подписи к точка пишуться не полностью в Firefox 8.0
Pavel Doronin
30 декабря 2011, 20:36

Добрый день.

Вот пример: http://www.kolgotoff.ru/page/punkty-vydachi-zakazov-mrkolgotoff-v-gmoskva

В Firefox 8.0 у некоторых точек название пишеться не полностью.

Проверили в Хроме 16.0 - все ок.

 

С чем может быть связано?

1 комментарий
хинт,Chrome,Firefox,поиск ошибок
Запрос по AJAX, через раз прогружается карта
Автор Комментария
28 декабря 2011, 12:04

http://teaspoon.ru/about/history.php

С чем связано что карта прогружается через раз? Вернее раз через три? Как её заранее предпрогрузить карту, чтобы событие addOverlay срабатывало только лишь после прогрузки карты.

...

map.addOverlay(gCollection -->

  1. 89Uncaught TypeError: Cannot call method 'addOverlay' of undefined

...

 

 

2 комментария
метка,AJAX,поиск ошибок
Яндекс.Карты распирает из таблицы
Иван
12 октября 2011, 02:25
<style>
    div   { width: 800px; margin: auto; }
    table { width: 100%; height: 400px; }
    #map  { width: 300px; }
    td    { border: 1px solid #000; }
</style>

<div>
    <table>
        <tr><td id="map"></td><td></td></tr>
    </table>
</div>

Ожидаемый результат: карты располагаются во всей левой ячейки таблицы

В IE (8) - карта отображается в виде полоски пикселей 70 по высоте и по ширине на всю левую ячейку
В Firefox (7.01) - карта вылезает из таблицы и отображается на все окно!!

В Opera и Chrome все в порядке

Это у вас косяк или у меня? Как бы починить по-быстрому?

Пример в действии
поиск ошибок
Отрисовка дополнительных линий на карте
denbl
2 сентября 2011, 18:31
Добрый день.

Проблема в следующем — на определенном масштабе карты на ней начинают рисоваться линии, которых на самом деле нет.

Вот пример такой отрисовки:


Вот эта длинная полоса через весь экран и является проблемой. По крайней мере, повторяется каждый раз на этом масштабе карте вот здесь.

Подскажите, пожалуйста, в чем проблема, и как избавиться от этой линии.
7 комментариев
поиск ошибок
Пропала маленькая голубая метка
Иван
2 сентября 2011, 15:15

визуально маленькая голубая метка (lightblueSmallPoint) выглядит как большая, с остальными стандартными цветными метками все в порядке..

placemark = new YMaps.Placemark(new YMaps.GeoPoint(35, 55), {style: "default#lightbluePoint"})
map.addOverlay(placemark);
placemark = new YMaps.Placemark(new YMaps.GeoPoint(35, 56), {style: "default#lightblueSmallPoint"})
map.addOverlay(placemark);

 

1 комментарий
метка,поиск ошибок
Уже отчаялся внедрить карту на страницу сайта.
pinyaev
5 августа 2011, 23:18

Подскажите. почему может не работать карта?

На странице не отрисовался даже серый квадрат.

Код карты взял из примеров, все равно не работает.

Удалил все. Оставил самый минимум - все равно не работает.

Адрес тут -

http://largecityhealth.ru/?s=Академика+Анохина

большое спасибо!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

2 комментария
поиск ошибок
[РЕШЕНО] Yandex maps API + firefox firebug = что тормозит?
happyman9
3 марта 2011, 15:10

Возник баг, чего и кого не понятно, обрисую ситуацию:

Коротко: при включенной консоли firebug firefox подвисает на загрузке апи яндекс карт и дальше при работе с ними.
 

Подробно:

Работал с картами уже не первую неделю, такого не случалось.

Начала
тормозить страница с Яндекс-картами. Тормозить - вместо обычной
секунды-трех инициализация затянулась на 10-15 секунд + подвисание ФФ.

Сначала думал что проблема в моём хитром коде, всё урезал урезал, в итоге осталось:

map = YMaps.Map() и map.setCenter()

создание карты проходило за 1 сек, setCenter - 10 сек. После загрузки любое действие на карте жутко медленное.

Переустановка firebug непомогла, очистка кеша ФФ, и сброс настроек firebug - тоже не дали результата.

Сейчас поудалял все плагины и оставил один firebug (причем переустановил его).

Удалил
весь код, оставил только загрузку API Yandex. Эта загрузка проходит ~5
секунд (незнаю как замерить). ФФ подвисает (что значит не проблема
связи).

Сейчас переставлю ФФ, расскажу результат.


*FF без firebug работает отлично

**однажды,
когда я решил использовать Хром после этого бага, после какого-то
момента Хром (при открытой консоли) выдал то же самое (тогда я уж просто
переключился на другой таск).  Правда после перезагрузки компа (на след
день) Хром заработал.

 
Что бы это могло быть?

9 комментариев
Firefox,поиск ошибок
Ошибка кодировки?
yacenturion
8 февраля 2011, 10:09

Добрый день.

Понадобилось обработать около сотни адресов, нашел стью про

"получения координат для списка адресов"

http://ymapsapi.ya.ru/replies.xml?item_no=81

и получил вот такой результат:

??????, ??. ???? ????????, 16ошибка
?????-?????????, ???????????? ??????????, 44ошибка
????????????, ??. ?????????, 10ошибка
???????????, ??. ????????????, 35ошибка
??????, ??. ????????????? 6, 11ошибка
????, ??. ????????????, 4ошибка
??????, ??. ????????, ??? 4-?ошибка
???????????, ??. ?????? ??????????, 6/13ошибка
???????????ошибка

 

Всего обработано адресов: 9
Не удалось прогеокодировать: 9
игрался с кодировками
в базе - не помогло.
Кто-то можете подсказать в чем проблема?

 

12 комментариев
MySQL,поиск ошибок
Начинающим вебразработчикам.
Andrey.Cjkjvfnby
13 сентября 2010, 11:27

Сам не так давно был начинающим поэтому свежи еще воспоминания о граблях.

Начать стоит со статьи:

Как правильно задавать вопросы

Ей уже много лет, но она до сих пор актуальна.

Если действовать по методике изложенной в статье, то 80% вопросов решаются сами.

Найти с помощью поиска  в 100-100500 раз быстрее чем дождаться ответа. (это самая большая группа мусорных, неинтересных вопросов)

Обязательные инструменты разработчика:

Обязательным является консоль ошибок джаваскрипт. Она есть в каждом браузере, но не все знают о ней. (это вторая группа  мусорных, неинтересных вопросов)

Вместо консоли я рекомендую использовать firebug. Кроме удобного вывода ошибок там есть еще некоторый полезные вещи:

Командная строка JavaScript Там можно отлаживать в реальном времени свои скрипты. (копируете пример из яндекса к себе на страницу, убираете var перед map (глобальная переменная)  и делаете с картой все что захотите.)


Умение искать + правильные инструменты: залог успеха.

API 1.x,поиск ошибок
кракозябры в метке
v4vitaliy
10 апреля 2010, 19:03

Подскажите, как избавиться от кракозябров в метке (индексная страница и файл формы контактов - в кодировке UTF-8). Спасибо.

Ссылка: http://www.restoran.graffiti-film.ru/index.php?option=com_contact&view=contact&id=1&Itemid=61

4 комментария
поиск ошибок
Кодировка в окне баллона
Удалённый пользователь
6 ноября 2009, 10:39

Добрый день!

Установил интерактивную карту на сайт: http://arthouse-2008.ru/kontakty

Все в принципе устраивает, но в окне баллона текст отображается крякозябрами, кодировка на сайте utf-8, смотрел на примере яндекса, там где отмечен офис на Самокатной улице, страница тоже в утф, но текст балона отображается нормал, в чем у меня может быть проблема и как ее решить?

11 комментариев
балун,поиск ошибок
Не правильное определение кодировки
serzhik
10 января 2009, 17:08

Сдлелал скрипт для отображения карты. Он прекрасно работал, но вот недавно посмотрел и увидел что перестала правильно отображаться кодировка. В чем может быть проблема, ведь мы со своей стороны ничего не меняли?

http://party.com.ua/geo/kiev/place/Shanti/

(браузер - Opera)

7 комментариев
поиск ошибок
Проблема с кодировкой
serzhik
27 ноября 2008, 09:50

Попросил друзей потестить карты у себя на сайте. Обнаружилась проблема с кодировкой.

Браузер: AvantBrowser 11.7 build 18

5 комментариев
поиск ошибок