2009-12-11 6 views
16

मुझे एक ऐसी साइट मिली है जो एक जटिल खोज करता है और इसमें "लोडिंग" पृष्ठ होता है। लोड हो रहा है पृष्ठ पर हम का उपयोग करें:आईई के पास एक location.referrer के बाद एक location.replacerer

<body onload="window.location.replace('results_page.php');" >

या:

<body onload="window.location = 'results_page.php';" >

दो विकल्प के बीच फर्क सिर्फ इतना ऊपर हैं कि location.replace() ब्राउज़र के इतिहास, पेज पर ध्यान नहीं देता।

results_page मैं ट्रैकिंग उद्देश्यों के लिए रेफरर पढ़ने की जरूरत है पर:

<script> alert(document.referrer); </script>

यह आईई, जो वापस आती है और document.referrer के लिए रिक्त मान को छोड़कर सभी ब्राउज़रों पर ठीक काम करता है।

कोई भी जावास्क्रिप्ट रीडायरेक्ट करने का एक बेहतर तरीका जानता है जो आईई को रेफरर के लिए एक मूल्य देगा?

पेज। यह उदाहरण उत्पादन में होने से कहीं अधिक सरल बना दिया गया है।

+0

क्या IE में होता है जब आप इस तरह विंडो स्थान के लिए URL सेट करें: 'विंडो स्थान = 'results_page.php''? – leepowers

+0

प्रश्न अद्यतन। – mattweg

उत्तर

24

ऐसा लगता है कि यह आईई उपयोगकर्ताओं के साथ व्यवसाय करने की लागत है। एक हैक के बिना तय नहीं किया जा सकता है। अभी एक पर काम करना सुनने के लिए धन्यवाद।

http://webbugtrack.blogspot.com/2008/11/bug-421-ie-fails-to-pass-http-referer.html

मैं इस समारोह बनाने के लिए वैकल्पिक हल के लिए इस्तेमाल किया। एक जादू की तरह काम करता है।

<script type="text/javascript" >    
function redirect(url) { 
    if (/MSIE (\d+\.\d+);/.test(navigator.userAgent)){ 
     var referLink = document.createElement('a'); 
     referLink.href = url; 
     document.body.appendChild(referLink); 
     referLink.click(); 
    } else { 
     location.href = url; 
    } 
} 
</script> 
+0

वाह मैट आपको बहुत धन्यवाद, इसके लिए एक फिक्स के लिए हर जगह देख रहा था! आईई 9 एक सामान्य स्थान को संभालता है। ठीक है, इसलिए jQuery के साथ मैंने इसे 'if ($ .browser.msie && $ .browser.version.substr (0, 1) <= 8)' आप नियम बनाते हैं! –

3

जानकारी: इंटरनेट एक्सप्लोरर जब एक दस्तावेज़ से जोड़ने के लिए एक और इंटरनेट एक्सप्लोरर 4.0 में असुरक्षित स्थितियों

में Referer हेडर नहीं भेजता है और बाद में, रेफ़रलकर्ता हेडर नहीं भेजा जाएगा कड़ी है जब एक HTTPS पृष्ठ से गैर-HTTPS पृष्ठ तक। रेफरर हेडर भी तब नहीं भेजा जाएगा जब लिंक गैर-HTTP (एस) प्रोटोकॉल से होता है, जैसे फ़ाइल: //, किसी दूसरे पृष्ठ पर।

Microsoft

0

मैट के आधार पर जवाब देने के लिए इस कोड का टुकड़ा भी IE11 पता लगाता है और नए टैब में यूआरएल को खोलता है। माइक्रोसॉफ्ट एज ब्राउज़र पर window.location.replace के साथ document.referrer को पास करने के लिए कोई अतिरिक्त बदलाव की आवश्यकता नहीं है।

<script type="text/javascript"> 
    function openUrlNewTab(url) { 
    //use userAgent to detect <IE11 and window obj to detect IE11 
    if (/MSIE (\d+\.\d+);/.test(navigator.userAgent) || 
     (!!window.MSInputMethodContext && !!document.documentMode)) { 
     var el = document.createElement('a'); 
     el.href = url; 
     el.target = '_blank'; 
     document.body.appendChild(el); 
     el.click(); 
    } else { 
     window.open(url); 
    } 
    } 
</script> 
संबंधित मुद्दे