Любой 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, время: 03:10. |