簡體   English   中英

第二個form.submit()在XP上的Safari中不起作用,適用於其他瀏覽器

[英]Second form.submit() doesn't work in Safari on XP, works on other browsers

我有一些代碼使用form.submit()來打開我的頁面上的東西時打開另一個窗口。 它適用於IE 6-8,Firefox和Chrome以及Mac上的Safari。 但是在Windows XP上的Safari中,單擊該內容后,其他任何執行form.submit()的鏈接都不起作用。 即使是相同的事情也不會這樣做。 這是該按鈕的一些回調代碼:

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”,但這沒有任何效果。

我看過這些類似的問題:

並嘗試了建議,他們沒有幫助。

Apple似乎必須意識到這個問題,因為它已於2009年登錄並據稱進入了他們的“雷達”錯誤跟蹤系統,但他們一定不在乎: https//bugs.webkit.org/show_bug.cgi?id = 28633

我從那個錯誤報告中實現了解決方案,它起了作用:

        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();

這是一個更簡單的解決方案 - 適用於所有瀏覽器,並為您提供日志文件中時間戳的附加值

<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();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM