Любой ID в URL
Здравствуйте. Хочу написать userscript который запускался на любой странице сайта с любым ID.
var addr = location.pathname;
if (addr == '/страница/id/*' ) {
alert('p');}
Пытался гуглить, но не знаю как гуглу корректно составить запрос. |
lkombatl,
регулярка |
lkombatl,
Цитата:
alert('p');
|
Цитата:
Т.е. если путь сайт/страница/ то он не должен работать. Если путь сайт/страница/id то все равно не должен работать. А если сайт/страница/id/*какое то число* то скрипт запускается. |
Цитата:
Регулярка как понял нежна для поиска и извлечения данных, но мне сам ID не нужен а нужно запускать скрипт при лбом наборе цифр. |
var arr = ['abcd/bcda','abcd/bcda/id','abcd/bcda/id/','abcd/bcda/id/100','abcd/bcda/id/1abc'];
var regex = new RegExp('/id/[0-9]{1,}(?![a-z])','i');
for (var i = 0; i < arr.length; i++) {
if (regex.test(arr[i])) { alert(arr[i] + " - Выполнять"); }
else { alert(arr[i] + " - Не выполнять"); }
}
|
простой маршрутизатор
var route = {
_routes: [], // здесь будут храниться функции, которые вызываются в зависимости от адреса
add: function(url, action) {
this._routes.push({
url: url,
action: action
});
},
run: function() {
this._routes.forEach(function(pattern) {
if(location.href.match(pattern.url)) {
pattern.action();
}
});
}
}
// пример
// выполниться всегда
route.add('.*', function() {
alert('Hello there!');
});
route.add('products.html', function() {
alert("this won't be executed :(");
});
// если сайт/страница/id/*какое то число* то скрипт запускается.
route.add('сайт/страница/id/\\d+', function(){
alert('This is using a regex!');
});
route.run();
|
Цитата:
Я то думал что попроще будет, на подобии знака '*' выделяющего любые данные, но чуть разобравшись и регулярные выражения не такими страшными кажутся. + в карму) |
Цитата:
но + в карму за старания) |
| Часовой пояс GMT +3, время: 15:30. |