第二个form.submit()在XP上的Safari中不起作用,适用于其他浏览器

时间:2011-05-18 18:22:05

标签: javascript safari

我有一些代码使用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”,但这没有效果。

我看过这些类似的问题:

并尝试了这些建议,他们没有帮助。

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分: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();
相关问题