1

我想在表单事件“onsubmit”中加载带有 JS 的图像,而无需取消表单的提交操作。

我要做的是:

var img = new Image();
img.onload = function(){
    myfunction();
};
img.src = URL_FOR_PHP_SCRIPT_TO_DO_SOME_LOGIC;
window_sleep(750); //Custom method to hang the CPU for 750ms until the request to call the image is called.

这个逻辑对我来说是必须的,我的意思是我不想使用 settimeout 来推迟表单提交,并且我必须以这种方式调用 URL_FOR_PHP_SCRIPT_TO_DO_SOME_LOGIC,因为此代码位于来自不同域的 JS 文件上。这个逻辑在所有浏览器上都可以正常工作,并且发送调用图像的请求——这正是我需要的——但是在 safari 上它不会调用图像请求,而是直接开始发布表单。当浏览器是 safari 时,我尝试在包含表单的页面上添加一个“onunload”事件,但这也没有帮助,并且表单仍然直接提交数据而不开始发送加载图像的请求。

4

1 回答 1

0

您不能使用 while 循环挂起 Safari 和 Firefox4+,这就是我猜您在睡眠功能中所做的事情。

挂起浏览器的唯一真正方法是进行同步 Ajax 调用而不是图像请求。同步调用的坏处是它会锁定浏览器,直到它回来。缓慢的连接可能意味着在提交表单之前要等待很长时间。

其他选择是将表单提交到您的服务器,然后将其转发到其他服务器。

于 2011-08-25T13:55:17.197 回答