2013-09-06 4 views
15

मुझे एक पृष्ठ को दूसरे पृष्ठ पर इंगित करने और फिर किसी विशेष अनुभाग पर स्क्रॉल करने की आवश्यकता है। क्रोम में www.example.com # section1 कर रहा है चाल (# अनुभाग 1 एक एंकर या तत्व की आईडी हो सकती है)।सफारी हाइपरलिंक्स पर क्लिक करते समय हैशटैग को अनदेखा/हटा रहा है?

मैं क्रोम और फ़ायरफ़ॉक्स में यह कोशिश की है और दोनों ब्राउज़र में यह ठीक (काम करता है मुझे फिर भी सफारी में लंगर के लिए स्वचालित रूप से पृष्ठ पर ले जाता है और फिर स्क्रॉल हैश गायब हो जाता है जब मैं लिंक पर क्लिक करें।

क्यों है यह हो रहा है? क्या यह सफारी पर करना संभव है, अगर नहीं, तो मैं इस समस्या के आसपास कैसे जा सकता हूं?

उत्तर

22

हाइपरलिंक्स का उपयोग करते समय अन्य पृष्ठों पर अंदर के अनुभागों को इंगित करते समय आपको हैशटैग से पहले स्लैश (/) जोड़ना याद रखना चाहिए क्रॉस ब्राउज़र संगतता के लिए।

ईजी: www.example.com/#item-1

www.example.com#item-1 कर सभी ब्राउज़रों

+0

बस कुछ ऐसा चाहता था जो दूसरों की मदद कर सके। मुझे भी यही समस्या आ रही थी। प्रारूप बिल्कुल समाधान की तरह था। हालांकि, सर्वर पथ (वर्डप्रेस। Htaccess) को बदलने के लिए mod-rewrite का उपयोग कर रहा था। ऐसा लगता है, जब यूपीएल सर्वर द्वारा रीडायरेक्ट किया जाता है तो सफारी हैश को स्ट्रिप करता है। – mrbinky3000

+0

आपको उन URL के लिए भी इसकी आवश्यकता है जो 'http: // www.example.com/foo # item-1' जैसे निर्देशिका नामों की तरह दिखते हैं। सफारी यहां पुनर्निर्देशित करने से टुकड़ा गिर जाएगा। आपको उन्हें यहां http: // www.example.com/foo/# item-1' भेजना होगा। – micah94

0

(जाहिरा तौर पर Chrome और Firefox यह है द्वारा) द्वारा स्वीकार नहीं किया है मेरे लिए यह किया गया था mrbinky3000 तरह ठीक उसी मुद्दा ऊपर कहा है: सर्वर आधुनिक-पुनर्लेखन में हैश की हत्या की गई थी सफारी।

समाधान की तरह एक पूर्ण पूर्ण लिंक का उपयोग करने के लिए किया गया था: http://www.example.com/path/#item-1

-1

मैं था सफारी के साथ एक संबंधित समस्या (iPhone/iOS पर) उचित रूप में हैश/टुकड़ा बंद अलग करना है जब एक कर:

var newHash = ...; 
window.location.replace("#" + newHash); 

वास्तव में समस्याजावास्क्रिप्ट त्रुटि जो केवल सफारी पर दिखाई दी थी। चूंकि मैं आसानी से आईफोन के लिए जावास्क्रिप्ट कंसोल का आकलन नहीं कर सका, इसलिए मैंने विंडो की सफारी (related post, download) का पुराना संस्करण डाउनलोड करना चुना।

फिर, मैं सफारी के पुराने संस्करण का उपयोग कर अपने विंडो के डेस्कटॉप पर आईफोन से समस्या को दोहरा सकता हूं। उस बिंदु पर, मैंने पाया कि जावास्क्रिप्ट टैग में गुम है ']'। यह एक वैध बग था, लेकिन इसे किसी भी तरह क्रोम, फ़ायरफ़ॉक्स और आईई द्वारा अनदेखा किया गया था।

window.location.replace() को भी नहीं कहा जा रहा था, क्योंकि कोड जावास्क्रिप्ट त्रुटि पर टूट रहा था। तो समस्या यह नहीं था कि सफारी हैशटैग को तोड़ रहा था, भले ही यह बहु-ब्राउज़र परीक्षण से दिखाई दिया।

4

मामला: मैं के बाद यूआरएल # myParam = 123, जब मैं की तरह यूआरएल # myParam = 789 सफारी कभी कभी लोड पिछले पृष्ठ myParam = 123 के आधार पर पैरामीटर बदल की तरह '#' पैरामीटर,

पता में हालांकि बार में यह दिखाया गया है कि मेरा पैराम = 78 9

समाधान: यूआरएल का उपयोग करें? # myParam = 123, फिर सफारी हर बार नया पृष्ठ लोड करेगा।
'?' का उपयोग करना '#' से पहले मेरी समस्या हल हो गई।

+0

मेरे लिए ठीक काम किया। धन्यवाद –

+0

मेरे लिए भी ठीक काम किया। अगर मैं 301 से/साइट्स/# कॉन्फ़िगरेशन पर रीडायरेक्ट करता हूं, तो सफारी/साइट्स पर जाता है, लेकिन जब मैं/साइट्स/# कॉन्फ़िगरेशन पर रीडायरेक्ट करता हूं, सफारी/साइट्स /? # Config पर जाता है मैंने अपने रीडायरेक्ट फ़ंक्शन को " ? " यदि खोपड़ी है तो हैश यूआरएल के अंदर है। –

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