2012-03-05 125 views
6

我的网站上的表单在Safari/Chrome中无法正常运行。当用户提交表单时,会打开一个新选项卡,但我希望原始页面(包含表单的页面)可以重新加载。它适用于IE,Opera和Firefox。safari/chrome onsubmit =“location.reload(true)”不起作用

的代码:

<form action="/search.php" method="post" onsubmit="location.reload(true)" target="_blank" name="myform"> 

我试图像其他的JavaScript功能:

  • window.location.reload();
  • document.location.reload();
  • window.location.replace('http://www.websiteurl.com');
  • window.location.href ='http://www.websiteurl.com';
  • 和这些的其他变化。

我想也许这是onsubmit =“”不工作,但是当我尝试onsubmit =“alert('test')”在Safari/Chrome中正常工作。

此外,的search.php页面表单员额,如果用户使用的URL,而不是提交表单直接进入该页面,我有它设置body标签会加载上:

​​3210

它适用于所有浏览器包括Safari/Chrome。

这是怎么回事?!?!

谢谢!

+0

我不知道为什么它不经常使用,但'setTimeout'黑客作品:http://jsfiddle.net/xzanQ/。 – pimvdb 2012-03-05 20:22:34

+0

你是否也希望打开新标签? – j08691 2012-03-05 20:22:34

+0

我有一个类似的问题,重新加载不能在所有的bowers中工作(尽管不是在表单重新加载的上下文中),并且以:window.location = window.location; – 2012-03-05 20:24:30

回答

4

因为它是你的解决方案:

使用setTimeout有时可以作为一个哈克的解决方案推迟执行了很短的时间:http://jsfiddle.net/xzanQ/

0

你可以尝试:

window.location.href=window.location.href 
0

onsubmit在表单发布前执行。如果页面已经被卸载,表单可能不再提交。

试着这么做:

var myForm=document.getElementById('myForm'); 
myForm.addEventListener('submit',function(event){ 
    event.preventDefault(); 
    this.submit();//Submit the form BEFORE reloading 
    location.reload(true);  
},false); 
0

我只是遇到类似problemnd的调试小时后我发现一个;失踪在我的onsubmit声明..

发生变化:

的onsubmit = “location.reload(真)”

要:

的onsubmit = “location.reload(真);”

固定我在Mac上的Safari的问题..