Объект не поддерживает свойство или метод assign internet explorer

Обновлено: 06.07.2024

"На этой странице произошла ошибка сценария"

Ошибка: Объект не поддерживает это свойство или метод

Продолжить выполнение сценариев на этой странице?"

Были выполнены все найденные рекомендации:

В Internet Explorer, в меню Сервис, в Свойствах обозревателя были поставлены флажки рядом с Отключить отладку сценариев (Internet Explorer) и Отключить отладку сценариев (другие).

Снят флажок с Показывать уведомления о каждой ошибке сценария.

В Панель Управления, Свойства папки, Задачи - Использовать Обычные папки Windows.

Все проделанные манипуляции не привели к устранению проблемы.

Где еще можно посмотреть?

Ответы

Проблема решилась путем установки IE8 beta2.

Все ответы

Переустановите Windows Script 5.6 или 5.7.

Данные версии Windows Script не устанавливаются на Windows Vista. Согласно найденной информации, приведенной ниже, используется перерегистрация библиотеки vbscript.dll, которая была произведена и не привела ни к какому результату.

Вариант не подходит. Что можно попробовать еще?

Question

I had a problem loading a HP compatibility file for Windows Vista, for my new scanner. The HP Technical person suggested I download Windows Script 5.6 because of the installer error code 2738. The instruction stated to go to Microsoft and download this file for your computer. There is not a Script 5.6 for Vista, but only for XP, 2000, 98 and the like. Will downloading the file for XP cause any problems for Vista?

Answer

Windows Vista already includes the latest scripting engine (version 5.7), so you do not need to install Windows Script 5.6 in Windows Vista. The Windows Installer error 2738 occurs if the module vbscript.dll is not registered in the system. To fix the problem, use these steps:

Open an elevated Command Prompt. To do so, click Start, click All Programs, click Accessories, right-click Command Prompt, and then click Run as Administrator. Type the following command and press ENTER.

Я использую этот всплывающий плагин jquery по этой ссылке на моем сайте WordPress. Он отлично работает во всех браузерах, но в IE11 выдает следующую ошибку.

enter image description here

ОТВЕТЫ

Ответ 1

Как отмечали другие, метод Object.assign() не поддерживается в IE, но имеется polyfill, просто включите его перед тем, ваше объявление плагина:

Ответ 2

Согласно документации, Object.assign() - это новая технология, часть стандарта ECMAScript 2015 (ES6):

И это не поддерживается IE.

Ответ 3

Из вашего комментария я понял, что вы хотите реализовать это в стеке узлов/реагирования. Это сильно отличается от оригинального вопроса, и вы должны были задать свой собственный;)
В любом случае, вот что тебе нужно сделать.

Вы можете использовать [es6-object-assign] [1]. Это ES6 Object.assign() "polyfill".

Сначала в package.json в корневой папке добавьте es6-object-assign в качестве зависимости:

Тогда, если вы хотите использовать его в среде узла, используйте:

Если у вас возникла проблема с интерфейсом (браузером).
Добавьте его в свой файл index.html.

location_of_node_modules зависит от используемого вами шаблона, в основном это только node_modules , но иногда, когда index.html находится в подкаталоге, который вам нужно использовать, ../node_modules

Ответ 4

Возможное решение этой проблемы:

Добавьте script legacy.min.js перед custombox.min.js

Ответ 5

@Андрес-Ильич имеет правильный ответ на ваш вопрос, но вы задаете неправильный вопрос:

Он сделает все, что захочет, и не выбросит эту ошибку.

Ответ 6

Есть все, что вы ожидаете от всплывающего окна и больше: D

В любом случае, по теме, я в настоящее время пишу версию 2, которая является большой перепиской и добавляет поддержку IE6 (версия 1 была IE7 +) и столкнулась с аналогичной ошибкой.

Исходный код, который дал ошибку в IE6:

Сбой, который я должен был придумать:

Ответ 7

Поскольку вы отметили вопрос с помощью jQuery, вы можете использовать функцию jQuery extend. Нет необходимости в polyfill, и он также глубоко объединяется.

Ответ 8

Эта ошибка обычно возникает, когда некоторый идентификатор элемента html имеет тот же идентификатор, что и некоторая переменная в функции JavaScript. После изменения имени одного из них работал код.

Ответ 9

В принципе, Object.assign не поддерживается всеми браузерами, однако можно повторно назначить его в Object , если он не поддерживается текущим браузером.

Предпочитает сделать функцию polyfill, которая ведет себя так же, как Object.assign(target, . ) ES6.

Я думаю, что лучшим решением является итерация каждого аргумента после target , присваивание каждому свойству объектов arguments target , учитывая итерацию между объектами и массивами, чтобы избежать создания ссылок. Необязательно, чтобы не потерянные экземпляры, вы можете определить, равен ли последний экземпляр свойства только "Array" или "Object" , и при этом вы не потеряете интерфейс Image (например), если вы планируете создавать новые ссылки, но объекты с этими экземплярами все равно будут ссылаться.

Изменить: исходный Object.assign не работает таким образом.

В соответствии с этим решением у меня есть свой polyfill, который можно найти здесь.

Ответ 10

Относительно ответа шрами, в котором говорится что-то вроде этого:

@JohnDoe из вашего комментария, вы хотите реализовать это в стеке узлов/реагирования. Это сильно отличается от исходного вопроса, но вы можете использовать es6-object-assign, ES6 Object.assign() "polyfill":

Этот polyfill был обновлен, и теперь все можно сделать немного иначе:

в package.json в корневой папке добавьте es6-object-assign в качестве зависимости (после выполнения npm i в командной строке):

Или просто запустите: npm я --save es6-object-assign

Чтобы использовать его в среде узла:

Чтобы использовать его в вашем index.html, просто добавьте в него ссылку на JS файл автоматического полифилла (если у вас есть <body> сценарии, которые вызывают Object.assign() вы можете добавить его в конце элемента <head> ),

Вызов напрямую из node_modules :

location_of_node_modules зависит от структуры вашего проекта (когда index.html находится в подкаталоге, который вам может понадобиться: ../node_modules ).

Однако, это может не node_modules для вас (из-за доступа к папкам node_modules , например, вы используете create-реагировать-приложение). Если это так, просто скопируйте файл JS из папки dist/ node_modules в папку public/ и затем:

Возможно, вы захотите использовать неминифицированный файл и добавить другие настраиваемые полифилы (например, startsWith ).

Я использую этот плагин для всплывающих окон jquery по этой ссылке на моем WordPress) сайте. Он работает нормально во всех браузерах, но в IE11 выдает следующую ошибку.

enter image description here

Как уже упоминали другие, метод Object.assign () не поддерживается в IE, но есть доступный полифильт, просто включите его "до" объявления вашего плагина:

Согласно документации, Object.assign () - это новая технология, часть стандарта ECMAScript 2015 (ES6):

И это не поддерживается IE.

Из вашего комментария я понял, что вы хотите реализовать это в стеке узлов/реагирования. Это сильно отличается от оригинального вопроса, и вы должны были задать свой собственный;)
В любом случае, вот что тебе нужно сделать .

Вы можете использовать [es6-object-assign] [1]. Это ES6 Object.assign () "polyfill".

Первый в package.json в корневой папке добавьте es6-object-assign как зависимость:

Затем, если вы хотите использовать его в среде узла, используйте:

Если у вас возникла проблема с интерфейсом (браузером) .
Добавьте его в свой файл index.html .

location_of_node_modules зависит от того, какой шаблон вы используете, в основном просто node_modules , но иногда, когда index.html находится в подкаталоге, который вам нужно использовать, ../node_modules

Возможное решение этой проблемы:

Добавьте сценарий legacy.min.js перед custombox.min.js

@ Андрес-Ильич имеет правильный ответ на ваш вопрос, но вы задаете неправильный вопрос:

Он сделает все, что вы хотите, и не выдаст эту ошибку.

Есть все, что вы ожидаете от всплывающего окна и многое другое: D

В любом случае, возвращаясь к теме, я сейчас пишу версию 2, которая является большой перепиской и добавляет поддержку IE6 (версия 1 была IE7 +) и столкнулась с похожей ошибкой .

Оригинальный код, который дал ошибку в IE6:

Взломать мне пришлось придумать:

Поскольку вы пометили вопрос с помощью jQuery, вы можете использовать функцию jQuery extension . Нет необходимости в полифиле, и оно также глубоко сливается.

Эти ошибки обычно возникают, когда некоторый идентификатор элемента html имеет тот же идентификатор, что и некоторая переменная в функции JavaScript. После изменения названия одного из них код работал.

По сути, Object.assign Поддерживается не всеми браузерами, однако его можно переназначить в том случае, если Object не поддерживается текущим браузером.

Целесообразно создать функцию полизаполнения, которая ведет себя так же, как Object.assign(target, . ) в ES6.

Я думаю, что лучшим решением является итерация каждого аргумента после target , присвоение каждого свойства объектов arguments target , учитывая итерацию между объектами и массивами, чтобы избежать создания ссылок. При желании, чтобы не потерянные экземпляры, вы могли определить, равен ли последний экземпляр свойства только "Array" Или "Object" , И при этом вы не потеряете Image интерфейс (например), если вы планируете создавать новые ссылки, но объекты с этими экземплярами по-прежнему будут ссылочными.

Редактировать : оригинал Object.assign Не работает таким образом.

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

Реагировать решение для IE11

Относительно ответ Шрами , в котором говорится что-то вроде этого:

@ JohnDoe из ваш комментарий , вы хотите реализовать это в нод/реагировать стека. Это очень отличается от исходного вопроса, но вы можете использовать es6-object-assign , ES6 Object.assign() "polyfill":

Этот polyfill был обновлен, и теперь все можно сделать немного иначе:

в package.json в вашей корневой папке добавьте es6-object-assign как зависимость (выполнив npm i в командной строке после):

Или просто запустите: npm i --save es6-object-assign

Чтобы использовать его в среде узла:

Чтобы использовать его в вашем index.html, просто добавьте к нему ссылку на файл JS-файла автоматического заполнения (если в <body> есть скрипты, которые вызывают Object.assign() вы можете добавить его в конце элемента <head> ).

Вызов непосредственно из node_modules :

location_of_node_modules зависит от структуры вашего проекта (когда index.html находится в подкаталоге, который вам может понадобиться: ../node_modules ).

Однако это может не сработать для вас (из-за доступа к папкам node_modules , например, вы используете create-реагировать-приложение ). Если это так, просто скопируйте файл JS из папки dist/ node_modules в папку public/ , а затем:

Возможно, вы захотите использовать неминифицированный файл и добавить другие настраиваемые полифилы (например, startsWith ).


Я использую этот всплывающий плагин jquery по этой ссылке на моем сайте WordPress. Он отлично работает во всех браузерах, но дает следующую ошибку в IE11.


  • 2 @JohnDoe, можешь ли ты привести рабочий пример?
  • 2 @pragya, пожалуйста, введите свой код, чтобы мы могли решить, в чем проблема . возможно, это проблема с тем, что элемент dom не найден или имеет одинаковый идентификатор несколько раз на странице.

Из вашего комментария я понял, что вы хотите реализовать это в стеке node / response. Это сильно отличается от исходного вопроса, и вы должны были задать свой собственный;)
В любом случае, вот что тебе нужно сделать .

Вы можете использовать [es6-object-assign] [1]. Это "полифил" из ES6 Object.assign ().

Сначала в папке в корневой папке добавьте в качестве зависимости:

Затем, если вы хотите использовать его в среде узла, используйте:

Если у вас возникла проблема на передней панели (в браузере) .
Добавьте его в свой файл index.html .

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

Согласно документации, Object.assign () - это новая технология, часть стандарта ECMAScript 2015 (ES6):

И это не поддерживается IE.

Возможное решение этой проблемы:

Добавьте скрипт legacy.min.js перед custombox.min.js

источник: custombox проект github

@ Andres-Ilich знает правильный ответ на ваш вопрос, но вы задаете неправильный вопрос:

Он сделает все, что вы хотите, и не выдаст эту ошибку.

Есть все, что вы ожидаете от всплывающего окна и многое другое: D

В любом случае, возвращаясь к теме, я сейчас пишу версию 2, которая является большим переписыванием и добавляет поддержку IE6 (версия 1 была IE7 +) и столкнулась с похожей ошибкой .

Исходный код, выдавший ошибку в IE6:

Хак, который мне пришлось придумать:

Поскольку вы отметили вопрос с помощью jQuery, вы можете использовать функцию расширения jQuery. Нет необходимости в полифилле, и он также выполняет глубокое слияние.

Эта ошибка обычно возникает, когда некоторый идентификатор элемента html имеет тот же идентификатор, что и некоторая переменная в функции JavaScript. После изменения названия одного из них код заработал.

Источник: SCRIPT438: объект не поддерживает свойство или метод IE

Другая ссылка: проверка jquery IE Object не поддерживает свойство

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

Правильно сделать функцию полифила, которая ведет себя так же, как в ES6.

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

редактировать: оригинал так не работает.

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

Что касается ответа Шрами, в котором говорилось примерно так:

@Джон Доу из вашего комментария, вы хотите реализовать это в узел / реакция стек. Это сильно отличается от исходного вопроса, но вы можете использовать es6-object-assign, "полифилл" ES6 :

Этот полифилл был обновлен, и теперь все можно сделать по-другому:

в в корневой папке добавьте в качестве зависимости (после выполнения в командной строке):

Или просто запустите:

Чтобы использовать его в среде узла:

Чтобы использовать его в своем index.htmlпросто добавьте автоматический полифилл JS файл ссылка на него (если у вас есть скрипты в <body> , который вызывает , вы можете добавить его в конец <head> элемент).

Вызов напрямую с :

зависит от структуры вашего проекта (когда index.html находится в подкаталоге, который может вам понадобиться: ).

Однако это могло не сработать для вас (из-за доступа к папкам , например, вы используете приложение create-response-app). Если это так, просто скопируйте файл JS из папки node_modules в папку , а затем:

Вы можете использовать неминифицированный файл и добавить другие настраиваемые полифиллы (например, ).

Читайте также: