Переопределить js функцию



  • Вызываю js на странице с переопределением функции, но на деле ничего не происходит. Пробовал и function LoadVideo(){...}, и window.LoadVideo = function(){...}, пробовал "выполнять при каждой загрузке страницы" и "Яваскрипт", функция не заменяется. В консоли тоже все глухо, ошибок нет.



  • @blackhacker Для начала в каком скоупе переопределяете функцию?
    Что будет если не переопределять функцию, а попробовать вывести ее значение?



  • @support Функция не позвращает значение, а переопределение нужно, чтобы уменьшить таймер, который инициализируется внутри нее. Функция создается в
    $( document ).ready(function() { function LoadVideo(){...}}), но я так же пробовал создавать функцию window.LoadVideo = function(){...} и назначать на onclick кнопки, по которой происходит клик в шаблоне. Значение таймера парсится из ответа ajax-запроса внутри функции, доступ к переменной не получить извне, поэтому пришлось заменить всю функцию.
    Попробовал все упростить до максимума, выполняю js с таким содержимым:
    $('#startBtn').on('click', function() { ... });, но все равно не работает, выполняется старая функция. Вместо точек идет код функции LoadVideo.



  • @blackhacker

    $( document ).ready(function() { function LoadVideo(){...}})

    Такую функцию не переопределите



  • @support делаю alert('test'); на странице, алерт не выводится.



  • @blackhacker alert в БАС отключен



  • @support $.ajax тоже не переопределить, для перехвата данных? Сделал так - не работает

    $.oldAjax = $.ajax;
    $.ajax = function(obj){
    console.log('test');
    obj.oldSuccess = obj.success;
    obj.success = function(data){
    obj.oldSuccess(data);
    }
    $.oldAjax(obj);
    };
    

    Но проблема в том, что даже console.log не выводится



  • @blackhacker поставьте ; перед $.oldAjax(obj);



  • @blackhacker И этот скрипт будет работать только после того, как $ будет определен, если хотите сделать лучше смотрите defineProperty



  • @support

    Javascript выполняется на активной вкладке? После каждого действия делал console.log, и увидел, что лог пропадает после того, как открывается новая вкладка.



  • @blackhacker

    Нашел причину ошибки - если при загрузке страницы были ошибки в сторонних js файлах, то выполнение кода не работает..

    Нет, должно работать



  • @blackhacker Проект с вашим кодом тоже работет

    ajax.xml



  • @support У меня работает внедрение js до того момента, как открывается новая вкладка. после этого console.log не выводится. если я скину вам проект, сможете посмотреть? все данные для проекта предоставлю. если бы форум поддерживал возможность выкладывать под хайдом, то отправил бы на форуме. а так не хочется, чтобы в паблик попало, проект для магазина



  • @blackhacker А, это потому что инструменты разработчика остаются со старой вкладки



  • @support А js в таком случае выполняется на новой вкладке? или на старой? или вообще не выполняется?



  • @blackhacker Js выполняется на текущей. С js все нормально и ошибки не при чем. Просто вы не видите сообщения, которое выводите.
    Вот так можно обновить инструменты http://prnt.sc/e8o9nj



  • @support Спасибо большое за помощь) а то уже всю голову сломал, думал, магия какая-то



  • @blackhacker Пожалуйста


Log in to reply