Web ページで奇妙な問題が発生しています。href に添付された JavaScript は問題なく呼び出され、呼び出された 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
});
}
}
ここで、スクリプト ブロックに次の関数を追加すると、すべてが機能しなくなり、更新リンクがクリックされたように見えます。Web ページの他のすべて (他のアイテムに関連付けられた JavaScript イベントなどを含む) は正常に動作し続けるため、ページの JavaSctipt は正常に動作していると思います。このリンクだけで、onClick イベントで定義された func の呼び出しが停止します。
次のコールバック関数を追加すると、「更新」リンクがクリックされていないかのように動作します。
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ビットマシンを使用しています。