Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 14.12.2016, 13:54
Интересующийся
Отправить личное сообщение для lkombatl Посмотреть профиль Найти все сообщения от lkombatl
 
Регистрация: 14.12.2016
Сообщений: 11

Любой ID в URL
Здравствуйте. Хочу написать userscript который запускался на любой странице сайта с любым ID.


var addr = location.pathname; 
    if (addr == '/страница/id/*' ) {
        alert('p');}


Пытался гуглить, но не знаю как гуглу корректно составить запрос.
Ответить с цитированием
  #2 (permalink)  
Старый 14.12.2016, 14:08
Аватар для Coriolan161
Профессор
Отправить личное сообщение для Coriolan161 Посмотреть профиль Найти все сообщения от Coriolan161
 
Регистрация: 21.11.2015
Сообщений: 440

lkombatl,
регулярка
Ответить с цитированием
  #3 (permalink)  
Старый 14.12.2016, 14:20
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

lkombatl,
Сообщение от lkombatl
на любой странице сайта с любым ID.
Значит, и проверять ничего не нужно.
alert('p');
Ответить с цитированием
  #4 (permalink)  
Старый 14.12.2016, 16:36
Интересующийся
Отправить личное сообщение для lkombatl Посмотреть профиль Найти все сообщения от lkombatl
 
Регистрация: 14.12.2016
Сообщений: 11

Сообщение от Dilettante_Pro Посмотреть сообщение
lkombatl,

Значит, и проверять ничего не нужно.
alert('p');
Не на любой странице, а на странице на которой указан ID, и ID может быть любой. Вот так я хотел выразится.

Т.е. если путь сайт/страница/ то он не должен работать.
Если путь сайт/страница/id то все равно не должен работать.
А если сайт/страница/id/*какое то число* то скрипт запускается.
Ответить с цитированием
  #5 (permalink)  
Старый 14.12.2016, 16:38
Интересующийся
Отправить личное сообщение для lkombatl Посмотреть профиль Найти все сообщения от lkombatl
 
Регистрация: 14.12.2016
Сообщений: 11

Сообщение от Coriolan161 Посмотреть сообщение
lkombatl,
регулярка
Сразу пошёл сюда https://learn.javascript.ru/regular-...ons-javascript вроде все проштудировал и не нашёл нужной информации.
Регулярка как понял нежна для поиска и извлечения данных, но мне сам ID не нужен а нужно запускать скрипт при лбом наборе цифр.
Ответить с цитированием
  #6 (permalink)  
Старый 14.12.2016, 17:08
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 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.
Ответить с цитированием
  #7 (permalink)  
Старый 14.12.2016, 20:30
Аватар для Malleys
Профессор
Отправить личное сообщение для Malleys Посмотреть профиль Найти все сообщения от Malleys
 
Регистрация: 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();
Ответить с цитированием
  #8 (permalink)  
Старый 15.12.2016, 15:37
Интересующийся
Отправить личное сообщение для lkombatl Посмотреть профиль Найти все сообщения от lkombatl
 
Регистрация: 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] + " - Не выполнять"); }
}
Спасибо большое, ваш вариант подошёл.
Я то думал что попроще будет, на подобии знака '*' выделяющего любые данные, но чуть разобравшись и регулярные выражения не такими страшными кажутся.

+ в карму)
Ответить с цитированием
  #9 (permalink)  
Старый 15.12.2016, 15:42
Интересующийся
Отправить личное сообщение для lkombatl Посмотреть профиль Найти все сообщения от lkombatl
 
Регистрация: 14.12.2016
Сообщений: 11

Сообщение от Malleys
простой маршрутизатор
Хороший код. Разбирать я его конечно не буду, ибо он меня немного пугает)

но + в карму за старания)
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Блокирование кнопки на 10 секунд после нажатия sergofedor06 Javascript под браузер 36 24.09.2016 00:40
переделать функцию adspro AJAX и COMET 5 09.03.2015 04:32
Не появляются картинки через jquery lobanov_kirill_ jQuery 1 22.09.2012 20:05
Водяной знак на fancybox bobrina Общие вопросы Javascript 1 03.06.2011 21:11
переход на выбор сайт через поле ввода url (как убрать функцию "открыть все") ? rashid86 Элементы интерфейса 1 31.03.2011 14:54