14.12.2016, 13:54
|
Интересующийся
|
|
Регистрация: 14.12.2016
Сообщений: 11
|
|
Любой ID в URL
Здравствуйте. Хочу написать userscript который запускался на любой странице сайта с любым ID.
var addr = location.pathname;
if (addr == '/страница/id/*' ) {
alert('p');}
Пытался гуглить, но не знаю как гуглу корректно составить запрос.
|
|
14.12.2016, 14:08
|
|
Профессор
|
|
Регистрация: 21.11.2015
Сообщений: 440
|
|
lkombatl,
регулярка
|
|
14.12.2016, 14:20
|
Профессор
|
|
Регистрация: 27.11.2015
Сообщений: 2,899
|
|
lkombatl,
Сообщение от lkombatl
|
на любой странице сайта с любым ID.
|
Значит, и проверять ничего не нужно.
alert('p');
|
|
14.12.2016, 16:36
|
Интересующийся
|
|
Регистрация: 14.12.2016
Сообщений: 11
|
|
Сообщение от Dilettante_Pro
|
lkombatl,
Значит, и проверять ничего не нужно.
alert('p');
|
Не на любой странице, а на странице на которой указан ID, и ID может быть любой. Вот так я хотел выразится.
Т.е. если путь сайт/страница/ то он не должен работать.
Если путь сайт/страница/id то все равно не должен работать.
А если сайт/страница/id/*какое то число* то скрипт запускается.
|
|
14.12.2016, 16:38
|
Интересующийся
|
|
Регистрация: 14.12.2016
Сообщений: 11
|
|
Сообщение от Coriolan161
|
lkombatl,
регулярка
|
Сразу пошёл сюда https://learn.javascript.ru/regular-...ons-javascript вроде все проштудировал и не нашёл нужной информации.
Регулярка как понял нежна для поиска и извлечения данных, но мне сам ID не нужен а нужно запускать скрипт при лбом наборе цифр.
|
|
14.12.2016, 17:08
|
Профессор
|
|
Регистрация: 27.11.2015
Сообщений: 2,899
|
|
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] + " - Не выполнять"); }
}
Последний раз редактировалось Dilettante_Pro, 14.12.2016 в 18:10.
|
|
14.12.2016, 20:30
|
|
Профессор
|
|
Регистрация: 20.12.2009
Сообщений: 1,714
|
|
простой маршрутизатор
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();
|
|
15.12.2016, 15:37
|
Интересующийся
|
|
Регистрация: 14.12.2016
Сообщений: 11
|
|
Сообщение от Dilettante_Pro
|
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] + " - Не выполнять"); }
}
|
Спасибо большое, ваш вариант подошёл.
Я то думал что попроще будет, на подобии знака '*' выделяющего любые данные, но чуть разобравшись и регулярные выражения не такими страшными кажутся.
+ в карму)
|
|
15.12.2016, 15:42
|
Интересующийся
|
|
Регистрация: 14.12.2016
Сообщений: 11
|
|
Сообщение от Malleys
|
простой маршрутизатор
|
Хороший код. Разбирать я его конечно не буду, ибо он меня немного пугает)
но + в карму за старания)
|
|
|
|