我有一些代码使用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 >></a>
我在Safari内置调试器中放置了一个断点,第二次单击它时,它肯定会进入accessEmployeeViewClicked()
函数,但form.submit();
什么都不做。根据评论中的建议,我将form.target更改为“_blank”,但这没有效果。
我看过这些类似的问题:
并尝试了这些建议,他们没有帮助。
答案 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();