Chrome および IE では、次のコードは、アンカー タグがクリックされると、フォーム ("modalContent" のモーダル ボックス ID、"DL" のフォーム ID) をポップアップし、フォームに "OnSubmit" を追加します。フォームが送信されると、Javascript を介して要求された PDF に移動し、ASP を実行して詳細が添付された電子メールを送信します。
<script language="javascript">
function downloadAnyway(link) {
$('#DL')[0].setAttribute('ONSUBMIT', 'return checkform("' + link + '")');
$('#modalContent').modal();
}
function checkform(navName) {
window.open(navName);
$.modal.close();
}
</script>
<!-- link to download a product guide -->
<a href='javascript:downloadAnyway("downloads/ProductGuide.pdf")');">Product Guide</a>
<div id="modalContent">
<form id="DL" action="contactusprocessNew2.asp" method="post" name="contact" >
<div align="center">
<input type="image" src="templates/default/images/submit_download.gif" class="imagebutton" value="submit" />
</div>
</form>
</div>
これは IE と Chrome では正常に動作し、Firefox では Javascript onsubmit が動作しますが、asp のアクションは決して起動しません。JavaScript を削除すると、ASP は期待どおりに起動します。
したがって、「onsubmit」が動的に追加された後の FireFox の最終的なフォームは次のようになります。
<form id="DL" action="contactusprocessNew2.asp" method="post" name="contact" onsubmit="return checkform("downloads/ProductGuide.pdf")">
onsubmit が起動し、別のタブで製品ガイドが開きますが、ASP アクションは起動しません。ここでは、ダウンロードを使用するたびにクライアントにダウンロードを要求しないように Cookie を作成するなど、さらに多くのことが行われていますが、問題のドメインの外側にあると思われるものはすべて削除しました。
ASP では、すべてのコードを取り除き、簡単な response.redirect を配置して、それが起動するかどうかを確認し、ASP で何も起こっていないことを確認しました。
これを FireFox で機能させる方法はありますか?
アップデート:
onsubmit イベント ワイヤアップを「適切な」jquery サブミット ワイヤアップに置き換え、以下の最初の行を 2 番目の行に置き換えました。フォームの ASP はまだ機能しません。
//$('#DL')[0].setAttribute('ONSUBMIT', 'return checkform(\'' + link + '\')');
$('#DL').submit(function checkform() {
$.modal.close();
window.open(link);
return true;
});
更新 2
そうです、ASP が起動する前にモーダル ポップアップが閉じるためです。行 $.modal.close(); をコメントアウトすると、その後、ASPは期待どおりに起動します。Chrome と IE では、javascript と ASP が同時に起動する必要があります。Firefox では、javascript が起動し、「modelContent」で div が「非表示」になり、asp が起動できなくなります。これが本当の問題です...今、それをどのように整理するか...