問題は、Flash がクリック イベントをトラップし、一部のブラウザーで DOM を介してフィルタリングしないことです。これに対する特定の修正はありません。
私が知っている2つの回避策があります:
- クリックを処理して適切な URL を開くコードを swf ファイルに追加します。
- クリックとリンクを適切にキャプチャする「シム」非表示リンクをフラッシュの上に配置します。フラッシュ ファイルにはこれらのうちの 1 つしか配置できないことに注意してください。したがって、フラッシュ ファイルに 2 つのリンクが必要な場合は機能しません。
#2 の例:
<div id="flashContainer">
<a id="shim" href="mylink.aspx"> </a>
<div id="flash">
<embed class="ads" src="swf/flash_banner.swf" width="315" height="100" wmode="opaque"></embed>
</div>
</div>
#flashContainer {
position: relative;
}
#flash {
z-index: 5;
}
#shim {
display: block;
position: absolute;
top: 0;
left: 0;
width: 315px;
height: 100px;
z-index: 10;
}
更新しました
#2 div を使用し、jQuery でクリック イベントをフックする例:
<div id="flashContainer">
<div id="shim"></div>
<div id="flash">
<embed class="ads" src="swf/flash_banner.swf" width="315" height="100" wmode="opaque"></embed>
</div>
</div>
#flashContainer {
position: relative;
}
#flash {
z-index: 5;
}
#shim {
position: absolute;
top: 0;
left: 0;
width: 315px;
height: 100px;
cursor: hand; cursor: pointer;
z-index: 10;
}
$("#shim").click(function() {
window.location.assign("mylink.aspx");
});