Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Интернет » Web-программирование » вопросы по javascript

Модерирует : Cheery

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116

Открыть новую тему     Написать ответ в эту тему

Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Weinaum

Цитата:
Там создал из своей функции метод _getTierPrices, который вызываю в методе _UpdatePrice.

модифицировать исходники сторонних виджетов плохая затея. исчезнет после обновления, обычно.
лучше именно использовать их API, для расширения возможностей.. либо костылем перехватывая что можно.
Цитата:
 Странно, но так и не понял, почему, локально все так же точно, но все таки видимо какие то отличия есть, возможно

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

Всего записей: 15115 | Зарегистр. 20-09-2014 | Отправлено: 09:16 30-12-2021
Weinaum



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii

Цитата:
модифицировать исходники сторонних виджетов плохая затея. исчезнет после обновления, обычно.
лучше именно использовать их API, для расширения возможностей.. либо костылем перехватывая что можно.

нет, я переписываю частично стандартный magento 2 модуль, но делаю это не в ядре естественно, а внутри своей темы. Это нормальная практика для magento - при обновлении ничего не слетит, единственное, нужно следить, конечно, вдруг файлы сильно меняются и нужно будет корректировать свой.  
еще раз
 

Всего записей: 2152 | Зарегистр. 18-06-2006 | Отправлено: 13:16 30-12-2021
WONDROUS



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подскажите, пожалуйста, если использовать Яндекс.Карты и вставку их через скрипт, то как сделать, чтобы на мобильных (или тач экранах) не работало перемещение по ним? Для обычных браузеров/экранов можно добавить scroll=false, но это не работает для тач экранов.

Всего записей: 3347 | Зарегистр. 30-06-2002 | Отправлено: 15:18 25-02-2022
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
WONDROUS
API Yandex.Карты
https://ru.stackoverflow.com/questions/703885/Как-отключить-перемещение-яндекс-карты-на-мобильном
https://dev-qa.com/81900/how-to-disable-scroll-on-yandex-maps
https://ru.stackoverflow.com/questions/453173/Как-запретить-масштабирование-Яндекс-Карты-при-скролле-только-на-мобильных-устро

Всего записей: 15115 | Зарегистр. 20-09-2014 | Отправлено: 21:02 25-02-2022
Vladsvn

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Добрый вечер!
 
В комментариях сайта vc.ru есть такая опция "нравится / не нравится".
http://images.vfl.ru/ii/1646321807/b46fbf4b/38305553.jpg
 
Нажать на значок справа - увеличится число между значками, нажать на значок слева - уменьшится.  
При этом не происходит перезагрузки страницы.
 
Очень хочется понять, каким кодом в простейшем случае это можно осуществить.
 
(вопрос занесения в базу данных я смогу решить, а вот как осуществить обмен браузер - сервер - браузер не знаю...).  
 
 
 
 

Всего записей: 342 | Зарегистр. 07-09-2016 | Отправлено: 18:41 03-03-2022
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Vladsvn
Основы
http://forum.ru-board.com/forum.cgi?action=filter&forum=31&filterby=topictitle&word=Ajax
У js фреймворков это уже встроенная стандартная фича.
https://jquery-docs.ru/jQuery.ajax/

Всего записей: 15115 | Зарегистр. 20-09-2014 | Отправлено: 18:59 03-03-2022
Vladsvn

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Редактор показывает наличие синтаксической ошибке в строке 17, то есть вот в этой
 
document.addEventListener('DOMContentLoaded', () =>  
 
Никак не пойму, в чем там дело.
 
А скрипт такой:
 
var siteModal;
var recaptcha_reg;
var recaptcha_log;
 
function site_fileload(e) { e.nextElementSibling.click(); }
 
function showProgressAjax()
{
  ajax_loading.style.display = 'block';
}
 
function hideProgressAjax()
{
  ajax_loading.style.display = 'none';
}
 
document.addEventListener('DOMContentLoaded', () =>  
{        
     
     document.querySelector("body").addEventListener("keydown", (e) => { if (e.target.closest(".form-validate")) { e.target.classList.remove('is-invalid'); } });
     document.querySelector("body").addEventListener("input", (e) => { if (e.target.closest(".form-validate")) { e.target.classList.remove('is-invalid'); } });    
       
     comment_input_message.oninput = () =>
     {  
       if (user_id == 0)  
       {    
         if (typeof siteModal !== 'object')  
         {    
           siteModal = new bootstrap.Modal(document.getElementById('modal_login'));  
                           
           siteModal.show();  
         
           console.log('1');
         }
         else if (!siteModal._isShown)
         {
           siteModal = new bootstrap.Modal(document.getElementById('modal_login'));  
                           
           siteModal.show();  
         
           console.log('2');  
         }          
       }    
         
       m();            
     }    
       
     document.querySelector("body").addEventListener("click", (e) =>  
     {  
       if (e.target.closest(".comment__action"))  
       {  
         var parent = e.target.closest(".comment");  
                 
         var child = parent.querySelector('.comment__expand-branch');
           
         var parent_id = parent.dataset.id;  
           
         var level = parent.dataset.level;  
         
         var next = parent.dataset.next;  
           
         comment_form_data_reply.value = parent_id;  
         
         comment_form_data_level.value = level;
         
         comment_form_data_next.value = next;
         
         child.after(comment_form);
         
         comment_placeholder.textContent = "Написать ответ...";
         comment_input_message.innerHTML = "";  
         comment_input_message.focus();
         comment_input_box.classList.add('thesis--empty');        
         comment_send_button.classList.add('v-button--disabled');
         comment_send_button_text.textContent = "Отправить";  
         comment_send_button.setAttribute("onclick", "b();");
             
         comment_cancel.innerHTML = "<div class=\"thesis__custom_button\" onclick=\"q("+parent_id+");\">Цитировать</div><div class=\"thesis__custom_button\" data-name=\"cancel\" onclick=\"a(true, false);\">Отмена</div>";              
         
         e.stopPropagation(); e.preventDefault();        
         return false;  
       }  
     
     });
     
     document.querySelector("body").addEventListener("click", (e) =>  
     {  
       if (e.target.closest(".comment-edit"))  
       {  
         var parent = e.target.closest(".comment");  
                 
         var child = parent.querySelector('.comment__expand-branch');
           
         var parent_id = parent.dataset.id;  
           
         var level = parent.dataset.level;  
           
         var image = parent.dataset.image;  
           
         comment_form_data_reply.value = parent_id;  
         
         comment_form_data_level.value = level;
         
         comment_form_data_media.value = image;
         
         if (image)
         {
           var html = '<div class="andropov_uploader__preview_item"><div class="andropov_uploader__preview_item__inner"><div class="andropov_preview andropov_preview--image" style="min-height: 80px; min-width: 80px"><img class="andropov_preview__image" style="max-width: 80px; max-height: 80px;" src="/upload/'+image+'"></div><div class="andropov_uploader__preview_item__remove" onclick="f();"></div></div></div>';
         
           comment_uploader.innerHTML = html;          
         }  
         else
         {
           comment_uploader.innerHTML = "";
           
           parent.setAttribute("data-image", "");
         }    
         
         child.after(comment_form);
                 
         var text = document.querySelector("#comment_text_"+parent_id).innerHTML;    
         
         comment_placeholder.textContent = "Редактировать комментарий...";
         comment_input_message.innerHTML = text;  
         comment_input_message.focus();
         comment_input_box.classList.remove('thesis--empty');        
         comment_send_button.classList.add('v-button--disabled');
         comment_send_button_text.textContent = "Редактировать";
         comment_send_button.setAttribute("onclick", "e();");
                 
         comment_cancel.innerHTML = "<div class=\"thesis__custom_button\" onclick=\"a(true, false);\">Отмена</div>";              
         
         [].slice.call(document.querySelectorAll('[data-bs-toggle="dropdown"]')).map(function (elem) { new bootstrap.Dropdown(elem).hide(); });
         
         e.stopPropagation(); e.preventDefault();        
         return false;  
       }  
     
     });
     
     document.querySelector('body').addEventListener("change", (e) =>  
  {
    if (e.target.closest(".site_load_file"))
    {  
      let fd = new FormData();
      fd.append("loadfile", e.target.closest(".site_load_file").files[0]);          
           
      var req = new XMLHttpRequest();  
      req.responseType = "json";
      req.open("POST", 'upload.php', true);
      req.setRequestHeader("X-Requested-With", "XMLHttpRequest");  
      req.ontimeout = () => { console.log('timeout'); };
      req.onerror = () => { console.log('error'); };
      req.onloadstart = () => { comment_input_box.classList.add("thesis--wait"); };
      req.onloadend = () => { comment_input_box.classList.remove("thesis--wait");  };  
      req.onload = () => { let result = req.response; if (result["data"]) { try { eval(result["data"]); } catch (err) { console.log(err); } } };
      req.send(fd);
    }
     
    return false;  
  });
     
});
   
   function q(id)
   {
     var text = document.querySelector("#comment_text_"+id).innerHTML;    
     
     text = text.replace(/<span.*?>.*?<\/span>/ig,'');
     
     text = stripHtmlToText(text);  
       
     comment_input_message.innerHTML = '
Цитата:
'+text+'
';
     
     m();
   }
   
   function stripHtmlToText(html)
   {
     var tmp = document.createElement("DIV");
     tmp.innerHTML = html;
     var res = tmp.textContent || tmp.innerText || '';
     res.replace('\u200B', '');  
     res = res.trim();
     return res;
   }
   
   function a(flag = true, focus = true)  
   {  
     if (flag == true)  
     {  
       comment_pseudo_form.after(comment_form);  
       comment_placeholder.textContent = "Написать комментарий...";
       comment_input_message.innerHTML = "";  
       if (focus) { comment_input_message.focus(); }
       comment_input_box.classList.add('thesis--empty');
       comment_cancel.innerHTML = "";
       comment_send_button.classList.add('v-button--disabled');
       comment_form_data_reply.value = 0;
       comment_form_data_level.value = 0;
       comment_form_data_subscription.value = 0;
       comment_form_data_up.value = 0;
       comment_send_button_text.textContent = "Отправить";
       comment_send_button.setAttribute("onclick", "b();");
       comment_uploader.innerHTML = "";
       comment_form_data_media.value = "";
     }
     else
     {
       comment_pseudo_form_up.after(comment_form);  
       comment_placeholder.textContent = "Написать комментарий...";
       comment_input_message.innerHTML = "";  
       if (focus) { comment_input_message.focus(); }
       comment_input_box.classList.add('thesis--empty');
       comment_cancel.innerHTML = "";
       comment_send_button.classList.add('v-button--disabled');
       comment_form_data_reply.value = 0;
       comment_form_data_level.value = 0;
       comment_form_data_subscription.value = 0;
       comment_form_data_up.value = 1;
       comment_send_button_text.textContent = "Отправить";
       comment_send_button.setAttribute("onclick", "b();");
       comment_uploader.innerHTML = "";
       comment_form_data_media.value = "";
     }          
   }
   
   function b()
   {  
     comment_form_data_message.value = comment_input_message.innerHTML;  
       
     ajax("comment.php", "#comment_form_data");
   }
   
   function e()
   {  
     comment_form_data_message.value = comment_input_message.innerHTML;  
       
     ajax("edit.php", "#comment_form_data");
   }
   
   function c()  
   {  
     comment_pseudo_form.after(comment_form);  
     comment_placeholder.textContent = "Написать комментарий...";
     comment_input_message.innerHTML = "";  
     comment_input_box.classList.add('thesis--empty');
     comment_cancel.innerHTML = "";
     comment_send_button.classList.add('v-button--disabled');
     comment_form_data_up.value = 0;      
   }
   
   function d()
   {
     document.querySelector(".comments__content_wrapper").classList.add("comments__content_wrapper--open");
   }
   
   function f()
   {
     comment_uploader.innerHTML = "";
     comment_form_data_media.value = "";
           
     m();    
   }
   
   function m()
   {
     if (comment_input_message.textContent.trim() == '')  
     {
       comment_input_box.classList.add('thesis--empty');
           
       comment_send_button.classList.add('v-button--disabled');          
     }
     else
     {
       comment_input_box.classList.remove('thesis--empty');
           
       comment_send_button.classList.remove('v-button--disabled');                    
     }    
   }
   
   function view_image(elem)
   {      
     modal_preview_image.style.display = "block";
     preview_image.src = elem.src;
   }
   
   function close_view_image()
   {      
     modal_preview_image.style.display = "none";    
   }
   
   function ajax(url = null, form = false)
   {            
     let post = form ? new FormData(document.querySelector(form)) : '';  
       
     const request = new XMLHttpRequest();
     request.timeout = 20000;  
     request.responseType = "json";
     request.open("POST", url, true);
     request.setRequestHeader("Accept", "application/json, text/javascript, */*; q=0.01");
     request.setRequestHeader("X-Requested-With", "XMLHttpRequest");  
     request.ontimeout = () => {  };
     request.onerror = () => {  };
     request.onloadstart = () => { showProgressAjax(); };
     request.onloadend = () => { hideProgressAjax(); };
   
     request.onload = () =>  
     {  
       let result = request.response;  
       
       if (result["data"])  
       {  
         try  
         {  
           eval(result["data"]);              
         }  
         catch (err)  
         {  
           console.log(err);  
         }        
       }
     };
   
     request.send(post);
 
     return false;
   }

Всего записей: 342 | Зарегистр. 07-09-2016 | Отправлено: 17:04 23-03-2022
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Vladsvn
Для длинных листингов есть тег more
 
А редактор может просто не знать современного синтаксиса языка.

Всего записей: 15115 | Зарегистр. 20-09-2014 | Отправлено: 19:03 23-03-2022
Vladsvn

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
То есть, фактически синтаксических ошибок в скрипте нет?  
На Ваш взгляд?

Всего записей: 342 | Зарегистр. 07-09-2016 | Отправлено: 19:08 23-03-2022
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Vladsvn
Вы серьезно хотите, чтобы я визуально это проверял? Вставьте, хотя бы, сюда и смотрите - https://jshint.com/

Всего записей: 15115 | Зарегистр. 20-09-2014 | Отправлено: 19:28 23-03-2022
Vladsvn

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Вы серьезно хотите, чтобы я визуально это проверял?
Нет, конечно. Я полагал, что речь идет о синтаксисе одной строки.
 
Спасибо.

Всего записей: 342 | Зарегистр. 07-09-2016 | Отправлено: 19:49 23-03-2022
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Vladsvn
хотите, чтобы редактор не ругался - используйте везде одинаковый синтаксис.
вместо () =>   будет function()  
вместо (e) => будет function(e)

Всего записей: 15115 | Зарегистр. 20-09-2014 | Отправлено: 19:58 23-03-2022
WONDROUS



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подскажите, пожалуйста, как в данном примере сделать, чтобы вместо фона за курсором двигались разные элементы (картинка или другой див внутри #parallax)?

Всего записей: 3347 | Зарегистр. 30-06-2002 | Отправлено: 17:35 29-03-2022
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
WONDROUS
отслеживаете координаты мыши, пересчитываете их разницу относительно какой то точки (центра экрана, к примеру), и пересчитываете координаты элемента, учитывая его "глубину" (чем дальше, тем меньше сдвигается)
 
это, собственно, код и делает.
 
ps: не используйте ресурсы, которые требуют логина для изменений.
https://jsfiddle.net/saL3wvrh/

Всего записей: 15115 | Зарегистр. 20-09-2014 | Отправлено: 20:55 29-03-2022 | Исправлено: Mavrikii, 01:28 30-03-2022
Vladsvn

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Для нового сайта я сделал меню с использованием jQuery версии jquery-3.6.0.min, а разработку скрипта комментирования передал фрилансеру. К сожалению, я не предупредил его, что на сайте используется jQuery, и он сделал скрипт на bootstrap, что стало для меня полной неожиданностью. Использован bootstrap@5.1.3/dist/js/bootstrap.bundle.min.js.
 
Как лучше выйти из этой ситуации, чтобы использовать обе разработки ? Можно ли одновременно (на одной странице) подключать и jQuery, и bootstrap ?

Всего записей: 342 | Зарегистр. 07-09-2016 | Отправлено: 10:59 30-03-2022
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Vladsvn
BS поддерживает jQuery напрямую
https://getbootstrap.com/docs/5.1/getting-started/javascript/

Цитата:
Still want to use jQuery? It’s possible!
Bootstrap 5 is designed to be used without jQuery, but it’s still possible to use our components with jQuery. If Bootstrap detects jQuery in the window object it’ll add all of our components in jQuery’s plugin system; this means you’ll be able to do $('[data-bs-toggle="tooltip"]').tooltip() to enable tooltips. The same goes for our other components.

Всего записей: 15115 | Зарегистр. 20-09-2014 | Отправлено: 11:59 30-03-2022
WONDROUS



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii
Спасибо за ответ и пример! Правда, объекты (квадраты) слишком намного уходят в сторону, а надо было бы всего пикселей на 50.

Всего записей: 3347 | Зарегистр. 30-06-2002 | Отправлено: 04:38 31-03-2022
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
WONDROUS

Цитата:
а надо было бы всего пикселей на 50.

ну так поправьте множители, чтобы были еще меньше. плюс нужно пересчитать относительно центра дива, а не угла.

Всего записей: 15115 | Зарегистр. 20-09-2014 | Отправлено: 04:50 31-03-2022
D1D1D1D

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Привет. Выше я приводил пример виджета для представления некоторых данных. Возникла идея скрывать второстепенные столбцы на устройствах с небольшим разрешением экрана. Как выяснил, срабатывает следующий код, если его поместить в файл "index.js" из архива с виджетом

Код:
if (screen.width <= 768) {
   e.component.columnOption(e.column.caption, 'visible', false);
}

Только он скрывает сразу все столбцы. Как задать выборочное скрытие?

Всего записей: 1367 | Зарегистр. 05-04-2010 | Отправлено: 04:25 02-04-2022 | Исправлено: D1D1D1D, 04:26 02-04-2022
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
D1D1D1D

Цитата:
Как задать выборочное скрытие?

точнее..

Всего записей: 15115 | Зарегистр. 20-09-2014 | Отправлено: 05:26 02-04-2022
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116

Компьютерный форум Ru.Board » Интернет » Web-программирование » вопросы по javascript


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru