2012-03-05 14 views
6

मेरी वेबसाइट पर एक फॉर्म सफारी/क्रोम में सही ढंग से काम नहीं कर रहा है। जब कोई उपयोगकर्ता फॉर्म सबमिट करता है, तो यह एक नया टैब खुलता है, लेकिन मुझे मूल पृष्ठ (उस पर फॉर्म के साथ पृष्ठ) को पुनः लोड करने के लिए चाहिए। यह आईई, ओपेरा, और फ़ायरफ़ॉक्स में काम करता है।सफारी/क्रोम ऑनसबमिट = "location.reload (true)" काम नहीं कर रहा

कोड:

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

मैं जैसे अन्य जावास्क्रिप्ट कार्यों की कोशिश की:

  • window.location.reload();
  • document.location.reload();
  • window.location.replace ('http://www.websiteurl.com');
  • window.location.href = 'http: //www.websiteurl.com';
  • और इनमें से अन्य भिन्नताएं।

मैं शायद सोचा था कि यह ऑनसबमिट था = "" काम नहीं कर रहा है, लेकिन मैं करने की कोशिश की जब ऑनसबमिट = "चेतावनी ('परीक्षण')" कि दोनों सफारी/क्रोम में ठीक काम किया।

इसके अलावा, search.php पेज प्रपत्र पदों के लिए, यदि कोई उपयोगकर्ता यूआरएल का उपयोग कर, और पर्चे को जमा नहीं पृष्ठ पर सीधे जाता है, मैं इसे सेट है कि शरीर टैग के रूप में लोड होगा है पर:

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

जो सफारी/क्रोम समेत सभी ब्राउज़रों पर काम करता है।

यहां क्या हो रहा है?!?

धन्यवाद!

+0

मैं क्यों यह नियमित रूप से काम नहीं करता है पता नहीं है फिक्स्ड, लेकिन एक 'setTimeout' हैक काम करता है: http://jsfiddle.net/xzanQ/। – pimvdb

+0

क्या आप नया टैब भी खोलना चाहते हैं? – j08691

+0

मुझे सभी बोउसर में काम नहीं कर रहा है (हालांकि फॉर्म रीलोडिंग के संदर्भ में नहीं) के साथ एक समान समस्या है और इसके साथ समाप्त हुआ: window.location = window.location; –

उत्तर

4

के बाद से यह आप के लिए समाधान था: http://jsfiddle.net/xzanQ/:

setTimeout का उपयोग कभी कभी एक बहुत ही कम समय के लिए निष्पादन स्थगित द्वारा एक hacky समाधान के रूप में काम करता है।

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 का सामना करना पड़ा मैं एक है कि पता चला; "(सही) location.reload"

करने के लिए

ऑनसबमिट =:: मेरे ऑनसबमिट बयान में याद आ रही थी ..

बदलने

ऑनसबमिट = "location.reload (सही),"

मैक समस्या पर मेरी सफारी ..

संबंधित मुद्दे