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(/.*\//, ''));
