我使用url
更改网页的当前window.history.replaceState()
而不刷新页面。这样,当用户点击此页面上列出的视频并在同一页面中播放相同的视频时,我就可以附加到当前的url
YouTube VideoID
。
我们假设样本urls
是 -
默认视频页面
http://www.domain.com/video/
用户点击视频网址更改后删除最后一个/
http://www.domain.com/video#Se1y2R5QRKU
我希望网址与/
保持一致
http://www.domain.com/video/#wckLzQDTm6s
以下是我正在使用的脚本,但我不确定从/
url
的内容
var regExp = /^.*((youtu.be\/)|(v\/)|(\/u\/\w\/)|(embed\/)|(watch\?))\??v?=?([^#\&\?]*).*/;
var match = URL.match(regExp);
if (match && match[7].length == 11) {
//console.log(match[7]);
currentURL = document.URL;
// alert(currentURL.slice(0, currentURL.lastIndexOf('#')));
console.log(currentURL.slice(0, currentURL.indexOf('#')));
var sliceURL = currentURL.slice(0, currentURL.indexOf('#'));
var newURL = sliceURL + '#' + match[7];
window.history.replaceState(null, "Video Gallery", newURL);
return match[7];
} else {
//alert("Could not extract video ID.");
}
答案 0 :(得分:1)
因为currentURL最初不包含#,所以indexOf将返回-1,结果是将删除最后一个字符(斜杠)。在切片之前,您应该显式检查散列是否在currentURL中:
var hashIndex = currentURL.indexOf('#');
var sliceURL = (hashIndex != -1) ? currentURL.slice(0, hashIndex) : currentURL;