ฉันจะรับตัวระบุส่วน (ค่าหลังจากแฮช #) จาก URL ได้อย่างไร


212

ตัวอย่าง:

www.site.com/index.php#hello

ใช้ jQuery ฉันต้องการใส่ค่าhelloในตัวแปร:

var type = 

ฉันไม่แน่ใจว่าคำถามนี้ควรถูกแท็กเป็น jQuery หรือไม่และถามเกี่ยวกับคำถามนี้ คำตอบส่วนใหญ่นำไปใช้กับ JS ที่ไม่มี jQuery และนี่เป็นเป้าหมายล่อลวงที่ดี
user4642212

คำตอบ:


585

ไม่จำเป็นต้องใช้ jQuery

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

154
jQuery ไม่เพียงพอ! (ล้อเล่น: +1)
nnnnnn

2
ฉันเพิ่งเรียนรู้ว่า # สามารถใช้เป็น 'hash' ซึ่งทำงานเป็นตัวระบุ / คำหลักใน JavaScript ยอดเยี่ยม
Clain Dsilva

13
คุณสามารถใช้.slice(1)แทน.substr(1)ซึ่งควรเพิ่มประสิทธิภาพเล็กน้อยแม้ว่าจะไม่ทำให้เกิดความแตกต่างในชีวิตจริง
devius

3
OMG กี่ครั้งที่คุณต้องตรวจสอบแฮช url เพื่อสร้างความแตกต่างที่เห็นได้ชัดเจน ล้าน? 'การเพิ่มขึ้นเล็กน้อย' เป็นการกล่าวเกินจริงอย่างมากในบริบทนี้ :-)
konrad

37

คุณสามารถทำได้โดยใช้รหัสต่อไปนี้:

var url = "www.site.com/index.php#hello";
var hash = url.substring(url.indexOf('#')+1);
alert(hash);

ดูตัวอย่าง


4
หมายเหตุ: indexOf ไม่รองรับ IE8
Sebastiaan Ordelman

4
@SchalkKeun โชคดีตอนนี้ใน '18 ใกล้จะหมดแล้ว แต่สำหรับผู้ที่ยังคงต้องรับมือกับตำนานนั้นควรระวังให้ดี
เซบาสเตียน Ordelman

6
ตามจริงแล้ว IE8 นั้นไม่ปลอดภัยดังนั้นการชำระเงินทั้งหมดที่เป็นไปตามมาตรฐานจะวางเบราว์เซอร์ที่ไม่รองรับ TLS 1.2 ในสัปดาห์หน้า (30 มิถุนายน 2561) คุณจะไม่สามารถชำระเงินจากพวกเขาได้เลย ดังนั้นสิ่งที่ทำให้เบราว์เซอร์เก่า ๆ เหล่านี้ไม่มีประโยชน์สำหรับลูกค้าอีคอมเมิร์ซใด ๆ
Schalk Keun

13
var url ='www.site.com/index.php#hello';
var type = url.split('#');
var hash = '';
if(type.length > 1)
  hash = type[1];
alert(hash);

สาธิตการทำงานกับjsfiddle


คำสั่งสามารถลงไปif var hash = type[1] || "";
user4642212


6

ฉันมี URL จากเวลาทำงานด้านล่างให้คำตอบที่ถูกต้อง:

let url = "www.site.com/index.php#hello";
alert(url.split('#')[1]);

หวังว่านี่จะช่วยได้


6

มันง่ายมาก. ลองรหัสด้านล่าง

$(document).ready(function(){
  var hashValue = location.hash.replace(/^#/, '');  
  //do something with the value here  
});

3
var hashValue = location.hash.replace (/ ^ # /, '');
flakerimi

3

ตามรหัสของ AK นี่คือฟังก์ชั่นตัวช่วย JS Fiddle Here ( http://jsfiddle.net/M5vsL/1/ ) ...

// Helper Method Defined Here.
(function (helper, $) {
    // This is now a utility function to "Get the Document Hash"
    helper.getDocumentHash = function (urlString) {
        var hashValue = "";

        if (urlString.indexOf('#') != -1) {
            hashValue = urlString.substring(parseInt(urlString.indexOf('#')) + 1);
        }
        return hashValue;
    };
})(this.helper = this.helper || {}, jQuery);
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.