У меня странная проблема на моей веб-странице. JavaScript, прикрепленный к href, вызывается просто отлично и перестает работать, если вызываемая функция javascript добавляет в нее оператор с функцией обратного вызова. В этом случае даже предупреждение, размещенное в качестве самого первого оператора в JS-функции, вызываемой из href, не срабатывает.
Вот пример: Следующее работает просто отлично.
при переходе по этой ссылке
<a href = "#" onclick="getMyPosition(); return false;">refresh</a>,
следующая js func вызывается просто отлично, и я вижу оба предупреждающие сообщения, указывающие на то, что getMyPosition() был выполнен. Примечание: в настоящее время (то есть, когда js вроде бы работает) функция обратного вызова ("handleposition") НЕ определена, но она не вызывает никаких ошибок! странно само по себе :)
function getMyPosition() {
alert("it worked 1.");
if ( navigator.geolocation )
{
alert("it worked 2.");
navigator.geolocation.getCurrentPosition(handlePosition, handleError, {
enabledHighAccuracy: true,
maximumAge: 60000,
timeout: 30000
});
}
}
Теперь, если я добавлю следующую функцию в блок сценария, все перестанет работать, и кажется, что ссылка обновления была даже нажата. Поскольку все остальное на веб-странице (содержащее события JavaScript и т. д., прикрепленные к другим элементам) продолжает работать нормально, я предполагаю, что JavaSctipt на странице работает нормально. Просто эта ссылка перестает вызывать функцию, определенную в событии onClick.
добавление следующей функции обратного вызова приводит к поведению, как если бы ссылка «обновить» даже не была нажата:
function handlePosition(pos)
{
alert(pos.coords.latitude);
alert(pos.coords.longitude);
window.location.href = "/map?js=y&lat=pos.coords.latitude&lon=pos.coords.longitude";
}
Теперь, если удалить эту функцию, ссылка href, показанная выше, снова начнет работать, будет вызвана функция getMyPosition, и я снова увижу предупреждающие сообщения! Я не вижу ошибок скрипта на странице Как в IE 11, так и в Chrome, демонстрирующих такое поведение. Я на 32-битной машине Windows 7.