function replacer(key, value) {
if (value instanceof jQuery) {
return undefined;
}
return value;
}
А вообще суть не в jQuery-объекте, они без ошибок сериализуются, а в том, что ТС как-то умудрился положить в свойство context ссылку на первое свойство этого объекта, то есть obj.shopSiteId[0] === obj.shopSiteId.context. Проверить можно как-то так.
Проблема в седьмой строчке файла ajax.js - сразу после загрузки документа вы вешаете на элемент #form обработчик. При копировании контента обработчик не копируется.
iamevg_, с сотворения спецификации ECMA-262. Требование наличия свойств value/get/set не превращает дескриптор в какой-то особый тип объекта, это всё тот же объект, просто в нем есть свойства value/get/set.
Я вроде как в курсе и что такое дескриптор и что такое Proxy, и я затрудняюсь ответить какая между ними разница, потому что это не связанные вещи. Дескриптор это просто объект, вообще любой объект, просто он каким-то определенным образом обрабатывается в некоторых методах Object.prototype. Отдельного термина "дескриптор" не существует.
Proxy это интерфейс не имеющий аналогов в JS. Как пример: с Proxy вы сможете поймать обращение к несуществующему свойству, а с геттером не сможете.
ЗЫ: вероятно вопрос можно перефразировать как "какая разница между геттером/сеттером и Proxy get/set?".
К сожалению, не работает: открыл первый попавшийся товар на маркете, открыл его странице на сайте, "document.querySelector('button[title="Предложения других магазинов"]')" возвращает null, при том что советник корректно показал предложения.
Я не знаю как именно работает Советник, но он не оставляет никаких следов на странице, по крайней мере я не нашел вообще ничего. Соответственно, предполагаю, что Советник просто проверяет URL текущей страницы, ищет его на Маркете и сравнивает найденный товар с другими на Маркете. Т.к. Советник работает в фоне постоянно, то вероятно если что-то и можно отследить, то только анализируя обмен данными между Советником и Маркетом. Например, если ответ от Маркета пустой, то образно можно считать, что на этой странице Советник отключен, а если не пустой - то Советник включен. То есть речь об еще одном стороннем расширении, которое следит за Советником. Но это только концепт, не знаю насколько это возможно.
Alex_87, по каким-то причинам preventDefault не работает. Занимайтесь дебагом, выясняйте какая часть кода выполняется, какая не выполняется. Вообще лучше используйте одно событие, незачем использовать одновременно и onload, и $( document ).ready
Alex_87, код я уже давно скачал, посмотрел. Простите, но я никак не могу вам помочь при такой структуре документа, к тому же я уверен в разных браузерах это будет работать по-разному. Это просто неправильная структура и работает страница только потому, что браузер предпринимает попытку исправить ошибки.
Делайте проще - в файле index.php отдавайте единый документ, а в файле mail.php (например) сделайте только отправку письма, всё.
Alex_87, "Товарищ, я бы с радостью это сделал. Вы думаете, тот путь, что я выбрал, быстрее? Просто там есть и внешние файлы, которые я не могу подключить в jfiddle" - на тостере в поле редактирования текста есть жирный кружок, он именно для таких случаев.
Вам не кажется, что склеивать два документа в один, да к тому же еще подключать в них одни и те же ресурсы, и надеяться, что всё это будет работать, как минимум странно? Решение - не склеивайте документы, и всё у вас будет работать.
Захожу на MDN, читаю: "[querySelector] Returns null if no matches are found; otherwise, it returns the first matching element." Вывод - элементов с классом pop не существует в текущем документе, в этом можно убедиться посмотрев на index.php.
Пожалуйста, проверяйте код перед тем как просить помощи на форуме.
$( document ).on('submit', 'form', function() {})
вместо$('#form').submit