JQuery का उपयोग करके URL से लंगर कैसे प्राप्त करें?


184

मेरे पास एक URL है जो इस प्रकार है:

www.example.com/task1/1.3.html#a_1

मैं a_1jQuery का उपयोग करके लंगर मूल्य कैसे प्राप्त कर सकता हूं और इसे एक चर के रूप में संग्रहीत कर सकता हूं ?

जवाबों:


206

आप उपयोग कर सकते हैं .indexOf()और .substring()इस तरह,:

var url = "www.aaa.com/task1/1.3.html#a_1";
var hash = url.substring(url.indexOf("#")+1);

आप इसे यहाँ एक कोशिश दे सकते हैं , अगर उसमें यह नहीं हो सकता #है, तो if(url.indexOf("#") != -1)इस तरह से एक जाँच करें:

var url = "www.aaa.com/task1/1.3.html#a_1", idx = url.indexOf("#");
var hash = idx != -1 ? url.substring(idx+1) : "";

यदि यह वर्तमान पृष्ठ URL है, तो आप window.location.hashइसे प्राप्त करने के लिए उपयोग कर सकते हैं, और #यदि आप चाहें तो प्रतिस्थापित कर सकते हैं।


10
कृपया ध्यान दें: iFrame के अंदर से मुख्य विंडो का हैश मान प्राप्त करने के लिए, आपको window.top.location.hashइसके बजाय उपयोग करना होगा ।
पाओलो स्टीफन

1
url.split("#").pop() - धीमी लेकिन आसान।
Ifch0o1

489

के लिए वर्तमान विंडो , तो आप इस का उपयोग कर सकते हैं:

var hash = window.location.hash.substr(1);

मुख्य विंडो का हैश मान प्राप्त करने के लिए , इसका उपयोग करें:

var hash = window.top.location.hash.substr(1);

यदि आपके पास URL / हैश के साथ एक स्ट्रिंग है, तो सबसे आसान तरीका है:

var url = 'https://www.stackoverflow.com/questions/123/abc#10076097';
var hash = url.split('#').pop();

यदि आप jQuery का उपयोग कर रहे हैं, तो इसका उपयोग करें:

var hash = $(location).attr('hash');

1
सुरुचिपूर्ण उत्तर। क्या ऐसे कोई मामले हैं जिनमें यह काम नहीं करता है?
sscirrus

2
शॉर्टकट संस्करण - var hash = window.location.hash.substr(1);जेएस के कारण दोनों ही प्रकार के पदार्थ / प्रतिस्थापन कार्य हैं, वे अलग-अलग हैं, लेकिन इस मामले में समान हैं।
आर्थर कुशमैन

इसके बदलावों पर नज़र रखने का सबसे अच्छा तरीका क्या है, यानी। किसी ने इनर-पेज लिंक क्लिक किया है?
रिड इकुलस

5
@RidIculous इसे आज़माएँ: $ (विंडो) .on ('हैशचेंज', फंक्शन () {$ ('h1')। टेक्स्ट (स्थान.शश (1));});
सिल्वियो डेलगाडो

71

उपयोग

window.location.hash

# से परे और सब कुछ प्राप्त करने के लिए


15
location.hash.slice(1)यदि आप अंतिम स्ट्रिंग में हैश टैग नहीं चाहते तो उपयोग करना याद रखें !
सैंडी गिफ्फोर्ड

39

jQuery शैली:

$(location).attr('hash');

7
प्रत्येक जावास्क्रिप्ट समस्या को jquery के साथ हल करने की आवश्यकता नहीं है।
17

22
@ डॉक्सिन मैं सहमत हूं लेकिन सवाल यह है कि "jQuery का उपयोग करके URL से लंगर कैसे प्राप्त करें?"
वैलेंटाइन ई

10

आप किसी भी मान्य URL को पार्स करने के लिए निम्न "ट्रिक" का उपयोग कर सकते हैं । यह लंगर तत्व के विशेष href- संबंधित संपत्ति का लाभ उठाता है hash

JQuery के साथ

function getHashFromUrl(url){
    return $("<a />").attr("href", url)[0].hash.replace(/^#/, "");
}
getHashFromUrl("www.example.com/task1/1.3.html#a_1"); // a_1

सादे जेएस के साथ

function getHashFromUrl(url){
    var a = document.createElement("a");
    a.href = url;
    return a.hash.replace(/^#/, "");
};
getHashFromUrl("www.example.com/task1/1.3.html#a_1"); // a_1

3

यदि आपके पास बस एक सादा url स्ट्रिंग है (और इसलिए हैश विशेषता नहीं है) तो आप एक नियमित अभिव्यक्ति का भी उपयोग कर सकते हैं:

var url = "www.example.com/task1/1.3.html#a_1"  
var anchor = url.match(/#(.*)/)[1] 

1
यह जाँचने की आवश्यकता है कि मैच इसके दूसरे तत्व तक पहुंचने से पहले परिणाम प्राप्त करता है, या यह कोड त्रुटि करेगा यदि यूआरएल में कोई एंकर नहीं है।
रिचर्ड गार्साइड
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.