我在我的网页中遇到了一个奇怪的问题。如果被调用的 javascript 函数在其中添加带有回调函数的语句,则附加到 href 的 JavaScript 会被正常调用并停止工作。在这种情况下,即使是作为从 href 调用的 JS func 中的第一条语句放置的警报也不会触发。
这是一个示例:以下工作正常。
单击此链接时
<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 页面上都没有看到任何脚本错误表现出这种行为。我在 Windows 7 32 位机器上。