在 Chrome 和 IE 中,下面的代码,当点击 Anchor 标签时,会弹出表单(模态框 ID 为“modalContent”,表单 ID 为“DL”)并在表单中添加一个“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 中运行吗?
更新:
我已经用“正确的”jquery submit wireup 替换了 onsubmit 事件 wireup,将下面的第一行替换为第二行。窗体上的 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 不能再触发。所以这是真正的问题......现在如何解决......