2011-05-18 73 views
5

我有一些代碼,當您點擊頁面上的某些內容時,它會使用form.submit()打開另一個窗口。它在IE 6-8,Firefox和Chrome以及Mac上的Safari中運行良好。但是在Windows XP的Safari中,當你點擊某個東西后,沒有其他的form.submit()工作。即使是相同東西不會這樣做。下面是一些該按鈕的回調代碼:Form.submit()在XP中無法在Safari上運行,可以在其他瀏覽器上運行

accessEmployeeViewClicked = function() { 
    var form=document.Form<xsl:value-of select="//PAGE/@NAME" />; 

    form.action = 'ServletName'; 
    form.target = "otherTarget"; 
    form.submit(); 
}; 

的功能是由下面的代碼訪問:

<a href="#" onclick="accessEmployeeViewClicked();return false;">Access employee's view &gt;&gt;</a> 

我把Safari的一個斷點內置調試器,你第二次點擊它,它肯定會進入accessEmployeeViewClicked()函數,但form.submit();什麼都不做。根據評論中的建議,我將form.target改爲「_blank」,但沒有任何效果。

我已經看了這些類似的問題:

,並試圖建議,他們不幫助。

+0

確定 - 嘗試改變'form.target =「otherTarget」;''到= form.target「 _blank「;' - 也請顯示執行的鏈接 – mplungjan 2011-05-18 18:24:00

+0

執行的鏈接是,正如你可能從上面的'Access employee's view' – 2011-05-18 18:57:35

+0

改變form.target到」_blank「沒有幫助。沒有將onclick改爲'「accessEmployeeViewClicked(); return false;」' – 2011-05-18 19:06:36

回答

1

看來蘋果一定是意識到了這個問題,因爲它是在2009年記錄的,也應該走進他們的「雷達」 bug跟蹤系統,但他們必須不在意: https://bugs.webkit.org/show_bug.cgi?id=28633

我實現了變通從bug報告,和它的工作:

 form.action = 'ServletName'; 
     // Work around for Safari bug suggested in https://bugs.webkit.org/show_bug.cgi?id=28633 
     if ($.browser.safari) 
     { 
      form.action += '?t=' + new Date().getTime(); 
     } 
     form.target = "otherTarget"; 
     form.submit(); 
+0

正如你可以從這個鏈接看到的,蘋果終於修復了最新版本的Safari中的bug。 – 2012-04-17 23:47:28

+0

您是否注意到移動Safari(iPhone/iPad)中令人討厭的緩存問題?當我用錨點更新鏈接時,頁面不刷新 – mplungjan 2012-04-18 05:31:59

0

這裏有一個簡單的解決方案 - 在所有瀏覽器將工作,讓你在你的日誌文件的時間戳的增值

<form onsubmit="this.ts.value=new Date().getTime()"> 
. 
. 
. 
<input type="hidden" name="ts" value="timestamp" /> 
</form> 

如果你有功能做的提交,該的onsubmit不會觸發這樣反而增加

form.target = "otherTarget"; 
form.ts.value=new Date().getTime() 
form.submit(); 
相關問題