Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 05.04.2016, 02:18
Новичок на форуме
Отправить личное сообщение для IgUrof Посмотреть профиль Найти все сообщения от IgUrof
 
Регистрация: 05.04.2016
Сообщений: 2

Как правильно использовать onerror чтобы погасить ошибки сценария?
Всем привет!

Программирую на 1С, есть задача организовать вывод гугл карт в 1С, в режиме тонкого клиента, платформа 8.3.7.1949. Все ресурсы про 1с уже изучил, прошу помощи у спецов по JS)

Опишу кратко, как пытаюсь решить задачу и в чем проявляется проблема.

В 1С на форме обработки создаю поле HTML документа, в который помещаю заранее подготовленный текст, написанный по примерам из документации гугл. По сути это самая простейшая карта с меткой. Вот текст документа

<!DOCTYPE html>
<html>

<head>
<title>Simple Map</title>
<meta name="viewport" content="initial-scale=1.0, user-scalable=no">
<meta charset="utf-8">
<style>
html, body, #map_canvas {
height: 100%;
margin: 0px;
padding: 0px
}
</style>

<script src="https://maps.googleapis.com/maps/api/js?v=3.exp"> </script>

<script>

function initialize() {

var myLatLng = {lat: 51.560, lng: 46.001};

var mapOptions = {
zoom: 12,
center: new google.maps.LatLng(51.560, 46.001)
};
var map = new google.maps.Map(document.getElementById('map_canva s'),
mapOptions);

var marker = new google.maps.Marker({
position: myLatLng,
map: map,
title: 'Hello World!',
clickable: false,
icon: 'http://google-maps-icons.googlecode.com/files/home.png'
});

}

google.maps.event.addDomListener(window, 'load', initialize);

</script>

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


При открытии обработки в 1С карта строится нормально, все как в браузере. Проблема в том, что через некоторое время появляется модальное окно с текстом “На этой странице произошла ошибка сценария”. Мне не удалось выявить каких-то закономерностей для этой ошибки - может возникнуть при малейшем движении мыши, а может через 20 кликов, изменениях масштаба карты и т.п. Тот же результат проявляется на разных версиях платформы.

В одном из обсуждений предлагается решать подобную проблему с пом. свойства window.onerror

Вопрос в том, как правильно использовать это свойство в моем случае и погасить возникающее сообщение об ошибке?

По найденному примеру на странице https://learn.javascript.ru/exception
перед строкой
google.maps.event.addDomListener(window, 'load', initialize);
добавил код
window.onerror = function(message, url, lineNumber) {
alert("Поймана ошибка, выпавшая в глобальную область!\n" +
"Сообщение: " + message + "\n(" + url + ":" + lineNumber + ")");
};

т.е. итоговый html документ сейчас содержит следующий текст

<!DOCTYPE html>
<html>

<head>
<title>Simple Map</title>
<meta name="viewport" content="initial-scale=1.0, user-scalable=no">
<meta charset="utf-8">
<style>
html, body, #map_canvas {
height: 100%;
margin: 0px;
padding: 0px
}
</style>

<script src="https://maps.googleapis.com/maps/api/js?v=3.exp"> </script>

<script>

function initialize() {

var myLatLng = {lat: 51.560, lng: 46.001};

var mapOptions = {
zoom: 12,
center: new google.maps.LatLng(51.560, 46.001)
};
var map = new google.maps.Map(document.getElementById('map_canva s'),
mapOptions);

var marker = new google.maps.Marker({
position: myLatLng,
map: map,
title: 'Hello World!',
clickable: false,
icon: 'http://google-maps-icons.googlecode.com/files/home.png'
});

}

window.onerror = function(message, url, lineNumber) {
alert("Поймана ошибка, выпавшая в глобальную область!\n" +
"Сообщение: " + message + "\n(" + url + ":" + lineNumber + ")");
};

google.maps.event.addDomListener(window, 'load', initialize);

</script>

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

Отлично! теперь перед появлением модального окна в 1С с ошибкой появляется предупреждение “Поймана ошибка, выпавшая в глобальную область!”
Т.е. сначала сообщение от веб страницы, потом ошибка, прилагаю скрины _1 и _2






Подскажите, пожалуйста, как мне правильно использовать свойство onerror чтобы избавиться от появления предупреждений и ошибок? Т.е. мне нужно совсем погасить все эти сообщения.
Спасибо.

Последний раз редактировалось IgUrof, 05.04.2016 в 03:00.
Ответить с цитированием
  #2 (permalink)  
Старый 05.04.2016, 10:53
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

IgUrof,
Лучше не погасить, а убрать ошибки.
Скопировал полностью второй вариант вашего кода. Единственное исправление, которое внес - убрал пробел в canvas в document.getElementById('map_canva s'),
Пробовал в Хроме, ИЕ, Опере, ФФ - ошибка ни разу не возникала ни при каких действиях
В качестве ВЕБ - сервера - Окна 7 с ИИС

В инете нашел такой вариант решения проблемы:
I was having the same error. I've just found a solution that worked for me.

I just added "&v=3.22" in the url of Google Maps. Like this:

http://maps.google.com/maps/api/js?sensor=true&v=3.22

Проверить не могу - у меня ошибок и так нет (но, по впечатлениям, работает лучше - более плавно, не дергается)

Последний раз редактировалось Dilettante_Pro, 05.04.2016 в 11:29.
Ответить с цитированием
  #3 (permalink)  
Старый 09.04.2016, 09:37
Новичок на форуме
Отправить личное сообщение для IgUrof Посмотреть профиль Найти все сообщения от IgUrof
 
Регистрация: 05.04.2016
Сообщений: 2

Вопрос решен с использованием кода
window.onerror = myOnError;
function myOnError(msg, url, lno) {return true}
вставленным перед
google.maps.event.addDomListener(window, 'load', initialize);

Всем спасибо!
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как правильно прописать полученные значения с сервера? Dimaz jQuery 0 07.12.2012 19:46
Как использовать sprit'ы? Hekumok Общие вопросы Javascript 17 10.08.2012 11:24
Как правильно прицепить обработку события slowklg Events/DOM/Window 6 15.03.2012 16:20
Как правильно использовать jQuery lightBox vishnu Элементы интерфейса 2 11.11.2009 07:00
Как правильно послать XML в POST запросе LowCoder AJAX и COMET 10 15.07.2009 23:20