ค้นหาเว็บไซต์

jquery - ส่วนท้ายสุดของ URL ด้วย JavaScript


ฉันจะได้ส่วนสุดท้ายของ URL ได้อย่างไร? ฉันมีสคริปต์ต่อไปนี้ที่แสดง URL เต็มของแท็กแองเคอร์ที่คลิก:

$(".tag_name_goes_here").live('click', function(event)
{
    event.preventDefault();  
    alert($(this).attr("href"));
});

ถ้า URL คือ

http://mywebsite/folder/file

ฉันจะทำให้มันแสดงเฉพาะส่วน "file" ของ URL ในกล่องแจ้งเตือนได้อย่างไร?

คำตอบ #1

คุณยังสามารถใช้ฟังก์ชัน lastIndexOf() เพื่อตำแหน่งการเกิดครั้งสุดท้ายของอักขระ / ใน URL ของคุณ จากนั้นใช้ฟังก์ชัน substring() เพื่อส่งคืนสตริงย่อยที่เริ่มจากตำแหน่งนั้น:

console.log(this.href.substring(this.href.lastIndexOf('/') + 1));

ด้วยวิธีนั้น คุณจะหลีกเลี่ยงการสร้างอาร์เรย์ที่มีทุกส่วนของ URL ของคุณ เช่นเดียวกับที่ split() ทำ

คำตอบ #2

var parts = 'http://mywebsite/folder/file'.split('/');
var lastSegment = parts.pop() || parts.pop();  // handle potential trailing slash

console.log(lastSegment);

คำตอบ #3

window.location.pathname.split("/").pop()

คำตอบ #4

คำตอบอื่น ๆ อาจใช้ได้หากเส้นทางง่าย ประกอบด้วยเพียงองค์ประกอบเส้นทางง่าย ๆ แต่เมื่อมันมี พารามิเตอร์การค้นหา ด้วย พวกมันจะเสียหาย

ควรใช้วัตถุ URL สำหรับสิ่งนี้แทนเพื่อให้ได้วิธีแก้ปัญหาที่มีความทนทานมากขึ้น มันเป็นการตีความที่ถูกวิเคราะห์ของ URL ปัจจุบัน:

อินพุต: const href='https://stackoverflow.com/boo?q=foo&s=bar'

const segments = new URL(href).pathname.split('/');
const last = segments.pop() || segments.pop(); // Handle potential trailing slash
console.log(last);

ผลลัพธ์: 'boo'

สิ่งนี้ใช้ได้กับเบราว์เซอร์ทั่วไปทั้งหมด มีเพียง IE ของเราที่กำลังจะตายเท่านั้นที่ไม่รองรับ (และจะไม่รองรับ) สำหรับ IE มี polyfills ให้ใช้ได้เช่นกัน (ถ้าคุณสนใจจริงๆ)

คำตอบ #5

แค่ตัวแก้ปัญหาอีกตัวหนึ่งด้วย regex

var href = location.href;
console.log(href.match(/([^\/]*)\/*$/)[1]);

คำตอบ #6

Javascript มีฟังก์ชัน split ที่เกี่ยวข้องกับออบเจ็กต์สตริงซึ่งสามารถช่วยคุณได้:

const url = "http://mywebsite/folder/file";
const array = url.split('/');

const lastsegment = array[array.length-1];

คำตอบ #7

วิธีที่สั้นที่สุดในการดึงส่วนท้ายของ URL ด้วย split(), filter() และ pop()

function getLastUrlSegment(url) {
  return new URL(url).pathname.split('/').filter(Boolean).pop();
}

console.log(getLastUrlSegment(window.location.href));
console.log(getLastUrlSegment('https://x.com/boo'));
console.log(getLastUrlSegment('https://x.com/boo/'));
console.log(getLastUrlSegment('https://x.com/boo?q=foo&s=bar=aaa'));
console.log(getLastUrlSegment('https://x.com/boo?q=foo#this'));
console.log(getLastUrlSegment('https://x.com/last segment with spaces'));

ใช้ได้สำหรับฉัน

คำตอบ #8

หรือคุณอาจใช้สมการปกติเพื่อ:

alert(href.replace(/.*\//, ''));

บทความที่เกี่ยวข้อง