2011-01-10 34 views
25

Tôi đang cố gắng sử dụng api dữ liệu youtube để tạo danh sách phát video. Tuy nhiên, url video yêu cầu định dạng youtube.com/watch?v=3sZOD3xKL0Y, nhưng những gì api tạo ra là youtube.com/watch?v=3sZOD3xKL0Y & feature = youtube_gdata. Vì vậy, những gì tôi cần làm là có thể chọn mọi thứ sau và bao gồm ký hiệu và xóa nó khỏi url. Bất kỳ cách nào để làm điều này với javascript và một số loại biểu thức chính quy?xóa tham số url bằng javascript hoặc jquery

+0

Hãy xem bài này: http://stackoverflow.com/questions/738351/proposal-for-javascript-url-manipulation-library-api/3215670 # 3215670 –

+0

có thể trùng lặp với [mã hóa chuỗi truy vấn của đối tượng javascript] (http://stackoverflow.com/question s/1714786/querystring-encoding-of-a-javascript-đối tượng) –

Trả lời

26

đơn giản:

var new_url = old_url.substring(0, old_url.indexOf('?')); 

Modified: này sẽ loại bỏ tất cả các tham số hoặc các mảnh vỡ từ url

var oldURL = [YOUR_URL_TO_REMOVE_PARAMS] 
var index = 0; 
var newURL = oldURL; 
index = oldURL.indexOf('?'); 
if(index == -1){ 
    index = oldURL.indexOf('#'); 
} 
if(index != -1){ 
    newURL = oldURL.substring(0, index); 
} 
+0

Wow. Nhanh như chớp. Tôi thực sự phát hiện ra rằng tôi sẽ cần phải kéo một nút khác nhau từ nguồn cấp dữ liệu mặc dù, đó là duy nhất.Làm thế nào tôi sẽ trích xuất chỉ id được thông qua ngay sau khi video: trong thẻ này - tag: youtube.com, 2008: video: 3sZOD3xKL0Y – mheavers

+2

Tôi nghĩ rằng trong câu trả lời đơn giản bạn đã có nghĩa là để gõ: var new_url = old_url.substring (0 , old_url.indexOf ('?')); Dấu và sẽ không hoạt động :) – theadam

+0

Bạn có thể nghĩ về một trường hợp mà [cách đơn giản nhất] (https://stackoverflow.com/questions/4651990/remove-url-parameters-with-javascript-or-jquery/27771398# 27771398) sẽ không hoạt động? – goldylucks

1

Bạn có thể sử dụng một RegEx để phù hợp với giá trị của v và xây dựng URL chính mình kể từ khi bạn biết địa chỉ URL là youtube.com/watch?v = ...

http://jsfiddle.net/akURz/

var url = 'http://youtube.com/watch?v=3sZOD3xKL0Y'; 
alert(url.match(/v\=([a-z0-9]+)/i)); 
16

Hmm ... Looking for cách tốt hơn ... ở đây là

var onlyUrl = window.location.href.replace(window.location.search,''); 
+0

Đó là trường hợp cụ thể của tôi để tải lại trang mà không có tham số: window.location.assign (window.location.href.replace (window.location.search, '')); – gtamborero

21

Tôi đang thiếu gì?

Tại sao không:

url.split('?')[0] 
+0

Hoạt động hoàn toàn tốt đẹp! –

2
//user113716 code is working but i altered as below. it will work if your URL contain "?" mark or not 
//replace URL in browser 
if(window.location.href.indexOf("?") > -1) { 
    var newUrl = refineUrl(); 
    window.history.pushState("object or string", "Title", "/"+newUrl); 
} 

function refineUrl() 
{ 
    //get full url 
    var url = window.location.href; 
    //get url after/ 
    var value = url = url.slice(0, url.indexOf('?')); 
    //get the part after before ? 
    value = value.replace('@System.Web.Configuration.WebConfigurationManager.AppSettings["BaseURL"]',''); 
    return value;  
} 
0

Sử dụng chức năng này:

var getCleanUrl = function(url) { 
 
    return url.replace(/#.*$/, '').replace(/\?.*$/, ''); 
 
}; 
 

 
// get rid of hash and params 
 
console.log(getCleanUrl('https://sidanmor.com/?firstname=idan&lastname=mor'));

Nếu bạn muốn tất cả các phần href, sử dụng này:

var url = document.createElement('a'); 
 
url.href = 'https://developer.mozilla.org/en-US/search?q=URL#search-results-close-container'; 
 

 
console.log(url.href); // https://developer.mozilla.org/en-US/search?q=URL#search-results-close-container 
 
console.log(url.protocol); // https: 
 
console.log(url.host); // developer.mozilla.org 
 
console.log(url.hostname); // developer.mozilla.org 
 
console.log(url.port); // (blank - https assumes port 443) 
 
console.log(url.pathname); // /en-US/search 
 
console.log(url.search); // ?q=URL 
 
console.log(url.hash); // #search-results-close-container 
 
console.log(url.origin); // https://developer.mozilla.org

0

Vâng, tôi đang sử dụng này:

stripUrl(urlToStrip){ 
     let stripped = urlToStrip.split('?')[0]; 
     stripped = stripped.split('&')[0]; 
     stripped = stripped.split('#')[0]; 
     return stripped; 
    } 

hay:

stripUrl(urlToStrip){ 
     return urlToStrip.split('?')[0].split('&')[0].split('#')[0]; 
    } 
Các vấn đề liên quan