2011-08-25 60 views
1

我想在窗體事件「onsubmit」內加載帶有JS的圖像,而不必使用窗體的提交操作。無法在safari上的提交表單事件中使用javascript加載圖像

我做的是以下幾點:

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」事件,但這並沒有幫助,並且表單仍然直接提交數據而沒有開始發送加載圖像的請求。

回答

0

你不能掛在Safari和Firefox4 +的while循環,這是我猜你正在做你的睡眠功能。

只有真正的方法可以掛上瀏覽器才能進行同步Ajax調用,而不是圖像請求。關於同步呼叫的壞處是它會鎖定瀏覽器,直到它返回。表單提交之前,連接速度慢可能意味着等待很長時間。

其他選項是將表單提交給您的服務器,並將其轉發給其他服務器。