Новости Joomla

Joomla 6 нуждается в вашей помощи с тестированием.Вышел недавно релиз Joomla 6 alpha1

Joomla 6 нуждается в вашей помощи с тестированием.Вышел недавно релиз Joomla 6 alpha1

👩‍💻 Joomla 6 нуждается в вашей помощи с тестированием.Вышел недавно релиз Joomla 6 alpha1. Это релиз, в который включены уже проверенные изменения, но ещё очень многие исправления и улучшения ждут своей очереди. Joomla следит за качеством и безопасностью своего кода и каждое изменение должно быть успешно протестировано как минимум ещё двумя участниками сообщества. Разработка Joomla ведётся на платформе GitHub.Филипп Уолтон (Philip Walton) - один из разработчиков, кто активно вносит свой вклад в ядро Joomla. Он уже несколько месяцев посвящает свои послеполуденные часы пятницы работе с Joomla и предлагает присоединиться к нему. 📆 Пятница, 30 мая 2025, с 15:00 до 17:00 по UTC (Лондон) - с 18:00 до 20:00 по Москве.В чате Google Meet Филипп готов помочь с тестированием тем, кто будет делать это в первый раз. А так же он подготовил список лёгких Pull Request, которые можно протестировать довольно быстро. Чем больше тестов будет проведено сейчас, тем меньше ошибок вылезет потом. На данный момент 148 (уже 147 на момент написания заметки) PR на GitHub Joomla ждут тестирования.👩‍💻 Open to all. All together.Также вам поможет сделать первые шаги это видео.GitHub JoomlaДа, это вечер пятницы. Но тестирование занимает порой минут 15, а доброе дело сделано. Просто убедитесь, что разработчик чего-то не пропустил и всё работает как ожидается.#joomla #joomla6 #community

0 Пользователей и 1 Гость просматривают эту тему.
  • 30 Ответов
  • 9309 Просмотров
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
Помогите создать скрипт, реализующий примерно следующее.
Есть материал article1, в котором имеется следующий html:
Код: html4strict
<dl>

  <dt><a name="anchor1"></a>bla-bla</dt>
  <dd>bla-bla-bla-bla-bla</dd>

  <dt><a name="anchor2"></a>bla-bla</dt>
  <dd>bla-bla-bla-bla-bla</dd>

  <dt><a name="anchor3"></a>bla-bla</dt>
  <dd>bla-bla-bla-bla-bla</dd>

</dl>

Есть материал article2, в котором имеются ссылки на /article1.html#anchor1, /article1.html#anchor2 и /article1.html#anchor3

При клике на эти ссылки мне нужно перейти по якорю и после этого съэмулировать клик на родительском <dt>, как будто бы пользователь изначально кликал по этому <dt>

Поскольку в js не силен, мозг уже 4 дня сломан.
*

zomby6888

  • Завсегдатай
  • 1473
  • 171 / 3
Re: Перехват ссылки на якорь на js
« Ответ #1 : 19.03.2014, 00:06:24 »
вобще клик в javascript событие всплывающее, при клики на линк, сначало будет обработано событие которое на вы на линк повесили а потом и на все родительские элементы. можете в этом убедится:
Код: javascript
var link = document.getElementsByName('anchor1')[0];
link.parentNode.onclick = function () {
alert('Клик по dt');
}
вам возможно просто текст нужен внутри анкора поместить?
<dt><a name="anchor1">bla-bla</a></dt>
интернет-блог: http://websiteprog.ru
*

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
Re: Перехват ссылки на якорь на js
« Ответ #2 : 19.03.2014, 01:32:34 »
http://learn.javascript.ru/play/TGkWtb
Код: javascript
    <script>
      window.onload = function () {
        var allslink = document.querySelectorAll("a[href^='#anchor']"),
          len = allslink.length,
          clickMe = function () {
            var ancel = document.querySelector("[name="+this.hash.slice(1)+"]"),
              par = ancel.parentNode || ancel.parentElement;
            par.onclick();
          };
        while (len) {
          allslink[--len].onclick = clickMe;
        };
      };
    </script>
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
Re: Перехват ссылки на якорь на js
« Ответ #3 : 19.03.2014, 09:08:50 »
А если имя якоря заранее неизвестно, потому что якорь вставляется пользователем, но известен класс <dl class="classname">, поскольку вся конструкция формируется плагином? Для <dt> также можно присвоить класс: <dt class="dtid-N">
При этом скрипт в плагине.

В консоли: TypeError: par.onclick is not a function
« Последнее редактирование: 19.03.2014, 09:11:57 от AlekVolsk »
*

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
Re: Перехват ссылки на якорь на js
« Ответ #4 : 19.03.2014, 12:32:34 »
Цитировать
В консоли: TypeError: par.onclick is not a function
потому как на dt не навешен обработчик это видно в примере так как там все работает
Смысл отсылать клик на dt если он не обрабатывается. Нет обработчика соответственно ошибка
Цитировать
также можно присвоить класс: <dt class="dtid-N">

http://learn.javascript.ru/play/eTZTL
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
Re: Перехват ссылки на якорь на js
« Ответ #5 : 19.03.2014, 17:07:06 »
На dt есть обработчик, и он работает:
Код: javascript
jQuery(function() {
  jQuery('dl.tabs dt').click(function() {
    jQuery(this)
    .siblings().removeClass('selected').end()
    .next('dd').andSelf().addClass('selected');
  });
});
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Re: Перехват ссылки на якорь на js
« Ответ #6 : 19.03.2014, 18:42:24 »
Код: javascript
par.click();
http://learn.javascript.ru/play/YpTFSb
Не будь паразитом, сделай что-нибудь самостоятельно!
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
Re: Перехват ссылки на якорь на js
« Ответ #7 : 19.03.2014, 18:53:04 »
значение id у dt обязательно должно совпадать при этом с именем якоря? или это просто для демонстрации скрипта?
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Re: Перехват ссылки на якорь на js
« Ответ #8 : 19.03.2014, 19:03:27 »
О боже, сами не могли проверить?
Конечно, нет. Я просто демонстрирую работоспособность скрипта Федора.
Не будь паразитом, сделай что-нибудь самостоятельно!
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
Re: Перехват ссылки на якорь на js
« Ответ #9 : 19.03.2014, 19:08:33 »
а не работает...
если интересно, именно в этом плагине пытаюсь реализовать: http://joomlaforum.ru/index.php/topic,273591.0/all.html
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
Re: Перехват ссылки на якорь на js
« Ответ #10 : 19.03.2014, 19:39:02 »
http://volskstroylicey.ru/entrant.html#paid-edu - при переходе сюда должна активироваться вторая вкладка, причем переход может быть из другого материала, из меню, с адресной строки браузера, с другого сайта.

Прошу помощи : (
*

fsv

  • Живу я здесь
  • 2781
  • 410 / 2
Re: Перехват ссылки на якорь на js
« Ответ #11 : 19.03.2014, 21:13:15 »
#paid-edu - при переходе сюда должна активироваться вторая вкладка, причем переход может быть из другого материала, из меню, с адресной строки браузера, с другого сайта.

Код: javascript
jQuery(function($) {
  var url = location.href;
  if( url.indexOf("#paid-edu")!== -1 ) {
    $('#tabs_tab1').find('dt').eq(0).removeClass('selected').end().eq(1).addClass('selected');
    $('#tabs_tab1').find('dd').eq(0).removeClass('selected').end().eq(1).addClass('selected');
  }
});
Веб-разработка: заказ. Только новая разработка.
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
Re: Перехват ссылки на якорь на js
« Ответ #12 : 19.03.2014, 21:25:58 »
Нет, не работает, к сожалению.
К тому же это решение для частного указанного случая, а мне нужно решение универсальное, для вставки в плагин, т.к. плагин используется на нескольких сайтах, вкладок на каждом много.
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Re: Перехват ссылки на якорь на js
« Ответ #13 : 19.03.2014, 21:29:44 »
fsv, и это его не устраивает, потому что опять не договаривает. Как я понял, он использует Tabs Plugin от ELLE и хочет инициировать клик по вкладкам из текста.
AlekVolsk, скрипт Федора работает, но ваш якорь скрыт. Положите его в название вкладки и клик сработает.
Не будь паразитом, сделай что-нибудь самостоятельно!
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
Re: Перехват ссылки на якорь на js
« Ответ #14 : 19.03.2014, 21:31:46 »
Могу реализовать, чтобы анкор изначально формировался плагином:
<dt class="tabid1"><a name="tabid1"></a>Вкладка 1</dt>
...
<dt class="tabid2"><a name="tabid2"></a>Вкладка 2</dt>
...

Если это поможет, конечно.
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
Re: Перехват ссылки на якорь на js
« Ответ #15 : 19.03.2014, 21:33:17 »
fsv, и это его не устраивает, потому что опять не договаривает. Как я понял, он использует Tabs Plugin от ELLE и хочет инициировать клик по вкладкам из текста.
Да, именно это.

AlekVolsk, скрипт Федора работает, но ваш якорь скрыт. Положите его в название вкладки и клик сработает.
Это как? не понял, а сейчас тогда он где?
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
Re: Перехват ссылки на якорь на js
« Ответ #16 : 19.03.2014, 23:44:44 »
Как правильно написать: у всех элементов tabs dt убрать selected и одному dd id=tab добавить selected:
$(tabs).find('dt').removeClass('selected').end().(tab).addClass('selected');

здесь tabs = "#tabs1"; tab = "#tab1";
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
Re: Перехват ссылки на якорь на js
« Ответ #17 : 20.03.2014, 00:04:04 »
Сейчас имею сформированный html:
Код: html4strict
<dl id="tabs1" class="tabs">

    <dt id="tab1" class="selected">  <a name="tabs1-tab1"></a> Вкладка 1  </dt>
    <dd id="tab1" class="selected"></dd>

    <dt id="tab2" class=""> <a name="tabs1-tab2"></a> Вкладка 2 </dt>
    <dd id="tab2" class=""></dd>

</dl>

Перехожу на якорь #tabs1-tab2

Скрипт:
Код: javascript
jQuery(function($) {
  var url = location.href; // получили URL
  if( url.indexOf("#tabs")!== -1 ) { // посмотрели, имеется ли якорь на вкладку
    url_tmp = url.split("#"); // разбили URL на до и после #
    url_arr = url_tmp[1].split("-"); // получили из имени якоря id
    tabs = '#'+url_arr[0]; // id группы вкладок
    tab = '#'+url_arr[1];  // id вкладки в группе
    $(tabs).find('dt').removeClass('selected').end(); // все заголовки - неактивны
    $(tabs).find('dd').removeClass('selected').end(); // все содержимое вкладок скрыть
    $(tabs).find(tab).addClass('selected'); // вкладку с нужным id активировать и отобразить
  }
});

Получаю эффект: заголовок второй вкладки активен (selected), а сама вкладка невидна (не selected). Где я ошибся?
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
Re: Перехват ссылки на якорь на js
« Ответ #18 : 20.03.2014, 00:33:00 »
Вот так работает:
Код: javascript
jQuery(function($) {
  var url = location.href;
  if( url.indexOf("#tabs")!== -1 ) {
    url_tmp = url.split("#");
    url_arr = url_tmp[1].split("-");
    tabs = '#'+url_arr[0];
    tab = '#'+url_arr[1];
    $(tabs).find('dt').removeClass('selected').end();
    $(tabs).find('dd').removeClass('selected').end();
    $(tabs+' '+tab).click();
  }
});

Всем спасибо. fsv, Вам +: именно ваша подсказка натолкнула в правильном направлении.

Решено.
*

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
Re: Перехват ссылки на якорь на js
« Ответ #19 : 20.03.2014, 00:35:26 »
id всегда должен быть уникален
Код: javascript
if( url.indexOf("#tabs") == -1 ) return;
url.hash - єто якорь
Код: javascript
alert(url.hash);
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
Re: Перехват ссылки на якорь на js
« Ответ #20 : 20.03.2014, 00:48:21 »
Уникальность id обеспечивается плагином вполне, проверено, т.к. групп вкладок может быть несколько.
http://joomlaforum.ru/index.php/topic,273591.msg1441197/topicseen.html#msg1441197
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Re: Перехват ссылки на якорь на js
« Ответ #21 : 20.03.2014, 00:52:43 »
Скрипт Федора тоже работает: http://learn.javascript.ru/play/HEE4jc
« Последнее редактирование: 20.03.2014, 08:42:52 от robert »
Не будь паразитом, сделай что-нибудь самостоятельно!
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
Re: Перехват ссылки на якорь на js
« Ответ #22 : 20.03.2014, 01:00:53 »
robert, я не спорю, но, к сожалению, у меня не получилось его запустить.
Я думаю, многие будут Вам признательны, если Вы внедрите его в плагин и поделитесь готовым решением, в виде готового к установке плагина, благо это решение более универсальное и удобное.
Мне уже не надо - меня устраивает вышеприведенное работоспособное решение, спасибо.
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
Re: Перехват ссылки на якорь на js
« Ответ #23 : 20.03.2014, 20:10:23 »
robert, специально смоделировал несколько раз: если скрипт Федора помещаю в head - он работает, если скрипт помещаю в файл скрипта плагина - не работает.
*

fsv

  • Живу я здесь
  • 2781
  • 410 / 2
Re: Перехват ссылки на якорь на js
« Ответ #24 : 20.03.2014, 21:52:57 »
если скрипт помещаю в файл скрипта плагина - не работает.
возможно, не в то событие в плагине

$(tabs).find('dt').removeClass('selected').end();
зачем?
Веб-разработка: заказ. Только новая разработка.
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Re: Перехват ссылки на якорь на js
« Ответ #25 : 20.03.2014, 21:55:17 »
Специально поставил плагин для проверки, у меня работает. А по-другому и не должно быть: что в head, что в отдельный js-файл - никакой разницы нет, нужно лишь порядок загрузки соблюдать.
Не будь паразитом, сделай что-нибудь самостоятельно!
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
Re: Перехват ссылки на якорь на js
« Ответ #26 : 20.03.2014, 22:58:31 »
возможно, не в то событие в плагине

$(tabs).find('dt').removeClass('selected').end();
зачем?
Действительно, чего это я...
Если и так реализуется клик, смысл дополнительно предварительно убирать selected отпадает сам собой. убрал из скрипта это - и так работает:
Код: javascript
    $(tabs).find('dt').removeClass('selected').end();
    $(tabs).find('dd').removeClass('selected').end();

Зачем .end() в конце? а и сам не знаю...

Последняя версия:
Код: javascript
jQuery(function($) {
  var url = location.href;
  if( url.indexOf("#tabs") == -1 ) return;
  if( url.indexOf("#tabs")!== -1 ) {
    url_arr = url.split("#")[1].split("-");
    $('#'+url_arr[0]+' #'+url_arr[1]).click();
  }
});
« Последнее редактирование: 20.03.2014, 23:04:19 от AlekVolsk »
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
Re: Перехват ссылки на якорь на js
« Ответ #27 : 20.03.2014, 23:05:33 »
robert, можно вашу версию script.js полностью?
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Re: Перехват ссылки на якорь на js
« Ответ #28 : 20.03.2014, 23:25:29 »
Да я ничего нового не добавил
Вот содержимое script.js
Спойлер
[свернуть]
Не будь паразитом, сделай что-нибудь самостоятельно!
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
Re: Перехват ссылки на якорь на js
« Ответ #29 : 20.03.2014, 23:36:32 »
Блин, ну не работает у меня:
Спойлер
[свернуть]
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Переход по ссылки и запуск функции? [РЕШЕНО]

Автор warlocksp

Ответов: 19
Просмотров: 1378
Последний ответ 21.02.2020, 12:06:24
от warlocksp
Дублируется адрес сайта при формировании ссылки если используется ssl

Автор denism300

Ответов: 0
Просмотров: 861
Последний ответ 08.11.2017, 19:47:25
от denism300
Рефф ссылки на каждую страницу?

Автор magastom89

Ответов: 6
Просмотров: 1332
Последний ответ 16.01.2015, 14:38:38
от magastom89