Как правильно использовать 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,
Лучше не погасить, а убрать ошибки. Скопировал полностью второй вариант вашего кода. Единственное исправление, которое внес - убрал пробел в 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 Проверить не могу - у меня ошибок и так нет (но, по впечатлениям, работает лучше - более плавно, не дергается) |
Вопрос решен с использованием кода
window.onerror = myOnError; function myOnError(msg, url, lno) {return true} вставленным перед google.maps.event.addDomListener(window, 'load', initialize); Всем спасибо! |
Часовой пояс GMT +3, время: 02:27. |