Домой Wp-Recall WP-Recall: Проблемы и решения Ошибка js в нотисе с ссылкой
23 ответ(ов) в теме
Владимир (Otshelnik-Fm)
не в сети 9 часов
На сайте с 27.01.2013
Участник
Тем 42
Сообщения 18334
1
18:31
Версия WP-Recall: 16.24.29

Вот такая ошибка возникает

Uncaught TypeError: jQuery(...).last().animateCss is not a function
    rcl_notice  /wp-content/plugins/wp-recall/assets/js/core.js?ver=16.24.29:242
    <anonymous>  /2346-2/?una_filter=publications:527
core.js:242:39

скрин:

Вы не можете просматривать опубликованные ссылки

Нотис использует ссылку в сообщении

Вы не можете просматривать опубликованные ссылки

и видимо скрипт не учитывает дополнительные теги в нотисе

0
Андрей CS
не в сети 11 часов
На сайте с 30.11.-0001
Администратор
Тем 71
Сообщения 15350
2
18:40

проблема скорее всего не содержимом нотиса, скрипт его не учитывает, не определена функция animateCss
как повторить?

0
Владимир (Otshelnik-Fm)
не в сети 9 часов
На сайте с 27.01.2013
Участник
Тем 42
Сообщения 18334
3
18:54

Нотис выдает доп Друзья. При заявке в друзья включенная опция

Вы не можете просматривать опубликованные ссылки

выдает при всплытии нотиса в консоли js ошибку.

Нотис вызывается так:
парсер ест косые. код ниже

Редакции сообщения
12.11.2020 18:56Владимир (Otshelnik-Fm)Причина: не указано
0
Владимир (Otshelnik-Fm)
не в сети 9 часов
На сайте с 27.01.2013
Участник
Тем 42
Сообщения 18334
4
18:56

Парсер сожрал косые - вот на гите

Вы не можете просматривать опубликованные ссылки
0
Андрей CS
не в сети 11 часов
На сайте с 30.11.-0001
Администратор
Тем 71
Сообщения 15350
5
19:21

делай так

echo '<script>jQuery( document ).ready( function() { 
    rcl_notice("тут контент нотиса","success",15000);
});</script>';

0
Владимир (Otshelnik-Fm)
не в сети 9 часов
На сайте с 27.01.2013
Участник
Тем 42
Сообщения 18334
6
19:41

в 6-ти дополнениях без события ready использовал.

Может в ядре плагина лучше проверку ввести на 242 строке:

    if ( typeof animateCss !== 'undefined' ) {
        jQuery( '#rcl-notice > div' ).last().animateCss( 'slideInLeft' );
    }

6 допов прекрасно нотис показывают. Ну а то что не будет анимации - не страшно.

Функция ниже rcl_close_notice тоже использует animateCss - но ей фикс не нужен этот. Проверил - отрабатывает. Только 242 строку подбить с проверкой и будет норм.

0
Preci
не в сети 4 часа
На сайте с 11.11.2014
Участник
Тем 71
Сообщения 1298
7
20:42

Дело в том, что js позволяет переопределять функцию, а значит rcl_notice может быть переопределена после того как у тебя она вызывается, в итоге отработает старая функция. По этому на мой взгляд правильно использовать вывоз rcl_notice после того как документ будет готов и все скрипты сформировались.

0
Владимир (Otshelnik-Fm)
не в сети 9 часов
На сайте с 27.01.2013
Участник
Тем 42
Сообщения 18334
8
20:49

Если ядро при вызове .animateCss() увидит что оно еще не готово и проверка в этом месте будет - плохого не случится. Сейчас случается

0
Preci
не в сети 4 часа
На сайте с 11.11.2014
Участник
Тем 71
Сообщения 1298
9
21:26

Ну я в данном случае описал другую возможную проблему. Добавлять ли это в ядро - решать Андрею, но на мой взгляд вызывать подобное надо исключительно после готовности документа.

0
Владимир (Otshelnik-Fm)
не в сети 9 часов
На сайте с 27.01.2013
Участник
Тем 42
Сообщения 18334
10
21:53

Поясни - какая проблема может возникнуть в ядре плагина - если функция проверяет наличие готовности .animateCss()?
Отбросим то, что у меня допы rcl_notice показывают. Правда без анимации. А вот плагин не готов к этому. А если кто-то .animateCss() уберет/переопределит/грохнет? Значит что плагин готов будет к этому - потому как есть проверка на готовность .animateCss()

Многие разрабы ломают своими действиями казалось бы верную работу фреймворка - и в фреймворк вносят коррективы чтоб работало стабильней. Темболее rcl_notice работало как часы всегда. А "обвес" к ней сломался.

Preci сказал(а)
решать Андрею

это да. Я лишь за диалог

Например в доках по добавлению метода в jquery

Вы не можете просматривать опубликованные ссылки

- не вешают на ready - он просто идет после jquery. Так и скрипт core.js имеет в зависимостях jquery

wp_enqueue_script( 'rcl-core-scripts', RCL_URL . 'assets/js/core.js', array( 'jquery' )

- а значит и так будет загружен после. Ему событие ready и не требуется. Если разбираться дальше - где я не прав?
Ну кроме того что сейчас после полсотни обновлений из-за обнов плагина еще 6-ть допов обновлять - мне лень. шестеро одного не ждут?

Я убрал проверку на undefined - получил ошибку. Потом в core.js убрал всю строку с ready на 7й строке и строку ниже так сделал: jQuery.fn.extend( {
- и ниже все как было. Итог - анимация появилась. js ошибка в консоли исчезла.

0
Preci
не в сети 4 часа
На сайте с 11.11.2014
Участник
Тем 71
Сообщения 1298
11
22:49

Ну так ты написал про одну проблему, предложил решить ее проверкой - я сказал что так не мой взгляд не хорошо.

А теперь ты говоришь о том, что бы расширять методы jQuery не после готовности документа, а сразу. Это уже другой вопрос.

Да, это решит проблему, но не отменяет того факта, что если кто-то после твоего кода переопределит rcl_notice, например для другого внешнего вида или еще чего - твой код вызовет стандартную функцию. По этому я и говорю что на мой взгляд обернуть rcl_notice в ready будет правильно не зависимо от того вызовет он ошибку animateCss или нет

0
Владимир (Otshelnik-Fm)
не в сети 9 часов
На сайте с 27.01.2013
Участник
Тем 42
Сообщения 18334
12
23:38

Preci сказал(а)
я сказал что так не мой взгляд не хорошо

не хорошо делать проверку "есть ли готовность метода"? Который сами и ввели, но поздней. т.е. функция сама уже в области видимости, а метод в ней - нет. Не находишь не корректно говорить - "у себя исправляй"? 6-ть раз...

Preci сказал(а)
Это уже другой вопрос.

не другой вопрос - а второй подход к решению маленькой несостыковки. Вопрос все тот же решает.

Preci сказал(а)
обернуть rcl_notice в ready будет правильно

почему ready? А если придет js-ник и замутит так что метод будет после DOMContentLoaded или load или window.onload или еще позже? (я не помню без гуглежа порядок этих событий - но чтото тут есть и позже ready)
Мы пишем под фреймворк, а не под что-то возможно, когда-то. Апи дает реколл. Его и использую.

Поломать переписать js функцию могут кто угодно и как угодно (а я не против что старый нотис выйдет - я под него и пишу). Писать в 6-ти допах лишние байты когда и так работает...

Использовать в исправлении фреймворка любой из описанных мною фиксов - это лучшее решение. Почему я должен нагромождать свой код проверками и думать что вдруг кто-то на каком-то там событии подменит функцию. Я и так знаю что мой js грузится позже зависимого.

Ок - я, видя что функция в core.js, зарегистрирую свой js с зависимостью от этого скрипта - это вроде right way wordpress. Но вот оказывается что её кто-то где-то изменил? Ну значит я буду работать именно с родной - от фреймворка. И не писать лишние байты. И не выпускать обновления допов своих просто от того что в ядре функция в области видимости, а метод что ядро само зарегило - нет...

В общем я спорю по совету "мне использовать лишние обертки".

0
Preci
не в сети 4 часа
На сайте с 11.11.2014
Участник
Тем 71
Сообщения 1298
13
00:33

Мне не важно как эта проблема будет решена, проверкой, регистрацией метода для jquery до готовности документа или еще как. Я написал что на мой взгляд, логичнее использовать вызов rcl_notice после готовности документа, независимо от ошибки animateCss. А дальше уже тебе решать.

0
garry
не в сети 14 минут
На сайте с 04.01.2014
Участник
Тем 143
Сообщения 2735
14
02:39

Оффтоп
Вы на время смотрели? Ненормальный сон, ведет к стрессу и вообще вреден. Сегодня пятница 13, включайте подобающий фильмец и спать под него 😎

Редакции сообщения
13.11.2020 02:53garryПричина: не указано
0
Владимир (Otshelnik-Fm)
не в сети 9 часов
На сайте с 27.01.2013
Участник
Тем 42
Сообщения 18334
15
03:24

Оффтоп
Да нормальное сейчас время 🕒
Самое то ⏰ чтобы кодить и познавать все радости и тяготы первопроходца ☕

0
garry
не в сети 14 минут
На сайте с 04.01.2014
Участник
Тем 143
Сообщения 2735
16
03:35

Оффтоп
Насчет радостей первопроходца, в точку, ночью самое оно их познать, но вот днем я обычно все переделываю, так как не работает 😀

0
Владимир (Otshelnik-Fm)
не в сети 9 часов
На сайте с 27.01.2013
Участник
Тем 42
Сообщения 18334
17
18:18

Фикс в ядре плагина будет? - да/нет
Это важный вопрос для меня

Владимир (Otshelnik-Fm) сказал(а)
функция в области видимости, а метод что ядро само зарегило - нет

- это неверно как по мне.

Прошло обновление на 16.24.30 а проблема осталась.

0
Андрей CS
не в сети 11 часов
На сайте с 30.11.-0001
Администратор
Тем 71
Сообщения 15350
18
19:57

ок, добавлю проверку

0
Владимир (Otshelnik-Fm)
не в сети 9 часов
На сайте с 27.01.2013
Участник
Тем 42
Сообщения 18334
19
16:00

Снова я с похожей ошибкой:

Вы не можете просматривать опубликованные ссылки

Все сторонние дополнения отключены. Только ядро плагина и его базовые дополнения. Реколл 16.24.31. ВП тема по дефолту Twenty Twenty Версия: 1.6. WordPress 5.6

Захожу в вкладку "Профиль" и выходит эта же ошибка.

может быть проблема в том что загружая вкладку "Профиль" повторно загружается и jQuery скрипт на 87 килобайт

Вы не можете просматривать опубликованные ссылки

- а это неверно же - у нас есть уже jquery библиотека на странице когда страница загружается. Но переход на вкладку "Профиль" вновь её тянет. Это же неправильно - лишний запрос к тому что есть. Да и такой массивный файл тянет

На этом скрине видно

Вы не можете просматривать опубликованные ссылки

что надпись JQMIGRATE: Migrate is installed, version 3.3.2 идет дважды. Первый раз когда страница ЛК загрузилась, а второй раз как раз из-за неверной повторной загрузки вместе с вкладкой "Профиль".

Скорей всего проблему повторить сможете есть в полях профиля доп поля поставите через админку - Поля профиля: у меня это тип поля "Файл" и Файловый загрузчик - они загружают jquery всякие зависимости

Вы не можете просматривать опубликованные ссылки

Быстрый фикс это конечно так на 110-й строке в scripts.js

if ( typeof animateCss !== 'undefined' ) {
    jQuery( '#lk-content' ).animateCss( 'fadeIn' );
}

Фикс в плагине мне критичен - т.к. в этой теме уперлись в него

Вы не можете просматривать опубликованные ссылки

- причина та же как и вкладке "Профиль" загружается повторно jQuery скрипт и видимо событие ready тут дает сбой и метод .animateCss не определен ещё. Фикс выше - устраняет ошибку и там и тут.

p.s. но что-то стремно еще и от того что jquery повторно грузится. Может его в список исключений как то вписать? Учитывая что он у нас и так в ЛК есть всегда

0
Preci
не в сети 4 часа
На сайте с 11.11.2014
Участник
Тем 71
Сообщения 1298
20
18:08

Сталкивался кучу раз с этой проблемой во вкладке Профиль.

При ее открытии у нее в контент подключаются нужные скрипты для работы вкладки, что бы не грузить их на всех вкладках. В коде recall я видел наработки на то, что бы при открытии вкладки вместе с ответом приходили требуемые скрипты для работы вкладки и затем уже их подключать, но это видимо недоделано.

Если сейчас просто во вкладке Профиль убрать вывод скриптов - то тогда ее надо делать без ajax поддержки. Или же вместо добавления скриптов в содержимое вкладки, добавить туда вызов какой либо функции, с передачей в нее скриптов. А эта функция уже будет проверять, если нужных скриптов нет - подключать их, если есть - игнорировать

0
Владимир (Otshelnik-Fm)
не в сети 9 часов
На сайте с 27.01.2013
Участник
Тем 42
Сообщения 18334
21
18:35

мой фикс решит ошибку с том месте скрипта и в вкладке профиль и вкладке которую вызывает мой доп с лоадером изображения.
А вот если просто ограничиться подгрузкой вкладки профиль не через ajax - то это не решит мой вопрос с ошибкой.

По повторной загрузке jquery - пока можно и закрыть глаза на это. Хотя и откладывать надолго нельзя.

0
Владимир (Otshelnik-Fm)
не в сети 9 часов
На сайте с 27.01.2013
Участник
Тем 42
Сообщения 18334
22
23:18

Андрей - обрати внимание на 19-е сообщение - снова проблема у пользователей выходит на 110-й строке

Вы не можете просматривать опубликованные ссылки

Плагин бежит впереди анимации и обращается к несуществующему еще методу.

0
Андрей CS
не в сети 11 часов
На сайте с 30.11.-0001
Администратор
Тем 71
Сообщения 15350
23
18:10

Поставил закладку, на выходных буду смотреть.

0
Вы не имеете права на публикацию сообщений в этой теме