2012-03-05 38 views
6

Biểu mẫu trên trang web của tôi không hoạt động chính xác trong Safari/Chrome. Khi người dùng gửi biểu mẫu, nó sẽ mở ra một tab mới, nhưng tôi muốn trang gốc (trang có biểu mẫu trên đó) tải lại. Nó hoạt động trong IE, Opera và Firefox.safari/chrome onsubmit = "location.reload (true)" không hoạt động

Bộ luật:

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

tôi đã cố gắng chức năng javascript khác như:

  • window.location.reload();
  • document.location.reload();
  • window.location.replace ('http://www.websiteurl.com');
  • window.location.href = 'http: //www.websiteurl.com';
  • Và các biến thể khác trong số này.

Tôi nghĩ có lẽ nó đã được onsubmit = "" không hoạt động, nhưng khi tôi thử onsubmit = "alert ('test')" có hiệu quả trong cả Safari/Chrome.

Ngoài ra, trên trang search.php mà biểu mẫu đăng lên, nếu người dùng truy cập trực tiếp vào trang bằng url và không gửi biểu mẫu, tôi đã đặt thẻ body sẽ tải là:

<body onload="window.location.replace("http://www.websiteurl.com")> 

hoạt động trên tất cả các trình duyệt bao gồm Safari/Chrome.

Điều gì đang xảy ra ở đây?!?!

Cảm ơn!

+0

Tôi không biết lý do tại sao nó không hoạt động thường xuyên, nhưng một 'setTimeout' Hack hoạt động: http://jsfiddle.net/xzanQ/. – pimvdb

+0

Bạn có muốn mở tab mới không? – j08691

+0

Tôi đã có một vấn đề tương tự với tải lại không làm việc trong tất cả các bowsers (mặc dù không phải trong bối cảnh tải lại hình thức) và kết thúc với: window.location = window.location; –

Trả lời

4

Vì nó là giải pháp cho bạn:

Sử dụng setTimeout đôi khi hoạt động như một giải pháp hacky bởi hoãn thực hiện trong một thời gian rất ngắn: http://jsfiddle.net/xzanQ/.

0

Bạn có thể thử:

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

onsubmit được thực hiện trước khi biểu mẫu được đăng. Nếu một trang đã được tải xuống, biểu mẫu có thể không được gửi nữa.

Hãy thử một cái gì đó như:

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

Tôi chỉ phải đối mặt với một problemnd tương tự sau khi gỡ lỗi cho giờ tôi phát hiện ra rằng một; đã mất tích trong bản Tuyên Bố onsubmit của tôi ..

Thay đổi:

onsubmit = "location.reload (true)"

Để:

onsubmit = "location.reload (true);"

Cố định Safari của tôi về vấn đề mac ..

Các vấn đề liên quan