2012-08-10 3 views
5

तो होम पेज से, मेरे पास एक लिंक है जो एक उत्पाद प्रविष्टि पृष्ठ पर जाता है। उत्पाद पृष्ठ divs का विस्तार/पतन हो गया है।jQuery अगर यूआर हैश, घटना पर क्लिक करें/सक्रिय जावास्क्रिप्ट

मुझे यूआरएल # के आधार पर विस्तार करने के लिए उपयुक्त div की आवश्यकता है।

<a href="javascript:ReverseDisplay('products4')" id="healthysnacks"> Healthy Snacks</a> 

मैं से कुछ की कोशिश की है:

तो मुखपृष्ठ पर लिंक

<a href="/out-products.php#healthysnacks">healthy snacks</a> 

जब मैं ऊपर के लिंक पर क्लिक करें, मैं इस सक्रिय करने के लिए कोशिश कर रहा हूँ, उत्पाद पृष्ठ पर है अन्य कोड जिन्हें मैंने पाया है कि हैश टैग की जांच करके ट्रिगर क्लिक करें और उनमें से कोई भी ठीक से काम नहीं कर रहा था, मुझे लगता है कि यह रिवर्सडिस्प्ले जेएस की वजह से है। कृपया कोई अंतर्दृष्टि मदद करेगा। आप jQuery के बजाय का उपयोग कर javascript: प्रोटोकॉल का उपयोग कर, आप jQuery click विधि का उपयोग कर सकते हैं कर रहे हैं

$(document).ready(function(){ 
    var id = window.location.hash; 
    $(id).trigger('click') 
}) 

:

धन्यवाद

उत्तर

6

आप दस्तावेज़ में निम्नलिखित परिवर्तन कर सकते हैं अपने उत्पाद पृष्ठ:

सरल फिक्स: jQuery आईडी-चयनकर्ता के बाद से #elementId है, आप बस अपने आईडी चयनकर्ता के रूप में window.location.hash मान का उपयोग कर सकते हैं और वांछित तत्व को लक्षित करने के लिए उपयोग करें।

if (window.location.hash) { 
    $(window.location.hash).click(); //clicks on element specified by hash 
} 

बेहतर: उपरोक्त के अतिरिक्त, अपने मार्कअप से बाहर js ले।

$('#healthysnacks').click(function(e) { 
    e.preventDefault(); 
    ReverseDisplay('products4'); 
}); 

फिर, इस करने के बाद, $(window.location.hash).click() कोड ऊपर से इस्तेमाल करते हैं। इसके अलावा, अपने लिंक बदलें:

<a href="#" id="healthysnacks"> Healthy Snacks</a> 
+0

@raminson 'window.location.hash' एक स्ट्रिंग देता है, इस मामले में '#healthysnacks' है, इसलिए यह एक आईडी चयनकर्ता के रूप में काम करता है। मुझे शायद यह स्पष्ट करना चाहिए कि पोस्ट में हालांकि, धन्यवाद – nbrooks

+0

हां, आप सही हैं, मैं भूल गया था कि हैश संपत्ति # संकेत भी लौटाती है। – undefined

+0

यह काम नहीं कर रहा है: \ –

3

आप Location वस्तु की hash संपत्ति का उपयोग कर सकते, निम्न प्रयास करें:

$('#healthysnacks').click(function() { 
    // do something here 
}) 
+1

आपको भी +1, वही विचार lol – nbrooks

+0

अच्छा समाधान, मेरे सेटअप के लिए बिल्कुल सही काम करता है। क्या इससे संबंधित कोई संभावित सुरक्षा त्रुटियां हैं?कहीं और मैंने इस तरह के उपयोग के लिए कुछ रेगेक्स स्वच्छता देखी है .. – cukabeka

3

जवाब यहां सुझाव मान्य हैं, लेकिन ...

अत्यंत सावधान रहें window.location.hash का उपयोग कर के रूप में यह एक jQuery चयनकर्ता में है इस वजह एक एक्सएसएस भेद्यता का कारण बन सकता है। $() एक HTML तत्व भी बना सकता है और एक सावधानी से निर्मित हैश मान के साथ, कोई मनमाने ढंग से जावास्क्रिप्ट कोड निष्पादित कर सकता है।

उदाहरण

लिए

http://my-website.com/about#'><img src=x onerror=alert(/XSSed/)>

my-websites.com/about पेज एक jQuery चयनकर्ता के अंदर window.location.hash उपयोग करता है, कि onerror कोड हो जाएंगे निष्पादित हो रही।

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

  • कोई संबंधित समस्या नहीं^_^