コンテキスト: 私の製品 Web サイトには、Java Webstart アプリケーションへのリンクがあります (いくつかの場所にあります)。
私の目標: ユーザーがダブルクリックできないようにします。つまり、最初のクリックでのみ「起動」し、3 秒待ってからリンクを再度有効にします。クリックすると、リンク画像を、アプリケーションが起動中であることを示すものに変更します。
クリック後に画像が確実に更新されないことを除いて、私のソリューションは機能します。コメントアウトされたデバッグ出力により、適切なコンテンツが得られ、マウスオーバー コールバックも正しく機能します。
http://www.auctober.de/beta/ (ボタン "jetzt starten" をクリックしてください) で実行されていることを確認してください。
ところで:そのダミーアニメーションよりも遅延のある関数を呼び出すより良い方法がある場合は、私に知らせてください。
JavaScript:
<script type="text/javascript">
<!--
allowClick = true;
linkElements = "a[href='http://www.auctober.de/beta/?startjnlp=true&rand=1249026819']";
$(document).ready(function() {
$('#jnlpLink').mouseover(function() {
if ( allowClick ) {
setImage('images/jetzt_starten2.gif');
}
});
$('#jnlpLink').mouseout(function() {
if ( allowClick ) {
setImage('images/jetzt_starten.gif');
}
});
$(linkElements).click(function(evt) {
if ( ! allowClick ) {
evt.preventDefault();
}
else {
setAllowClick(false);
var altContent = $('#jnlpLink').attr('altContent');
var oldContent = $('#launchImg').attr('src');
setImage(altContent);
$(this).animate({opacity: 1.0}, 3000, "", function() {
setAllowClick(true);
setImage(oldContent);
});
}
});
});
function setAllowClick(flag) {
allowClick = flag;
}
function setImage(imgSrc) {
//$('#debug').html("img:"+imgSrc);
$('#launchImg').attr('src', imgSrc);
}
//-->
</script>