remove propiedad permite objeto método metodo internet from firma esta acepta jquery wordpress popup modal-dialog

jquery - metodo - el objeto no permite esta propiedad o método



Obteniendo error: el objeto no admite la propiedad o el método ''asignar'' (9)

Estoy usando este plugin jquery popup desde este enlace en mi sitio de WordPress. Funciona bien en todos los navegadores pero da el siguiente error en IE11.

Cualquier ayuda es muy apreciada.


@ Andres-Ilich tiene la respuesta correcta a su pregunta, pero usted está haciendo la pregunta incorrecta:

¿Por qué no utilizar un plugin jQuery que sea compatible con IE como Reveal excelente de Zurb ?: https://github.com/zurb/reveal

Hará todo lo que quiera y no arrojará este error.


@John Doe

Descubrí por tu comentario que quieres implementar esto en la pila node / react. Esto es muy diferente de la pregunta original y deberías haberte hecho la tuya propia;)
De todos modos, aquí está lo que tienes que hacer ...

Puede usar [es6-object-assign] [1]. Es un ES6 Object.assign () "polyfill".

Primero, en package.json en su carpeta raíz, agregue es6-object-assign como dependencia:

"dependencies": { "es6-object-assign": "^1.0.2", "react": "^0.12.0", ... },

Luego, si desea usarlo en el entorno del nodo, use:

require(''es6-object-assign'').polyfill();

Si tiene el problema en el extremo frontal (navegador) ...
Agréguelo en su archivo index.html ...

<script src="location_of_node_modules/es6-object-assign/dist/object-assign.min.js"></script> <script> window.ObjectAssign.polyfill(); </script>

location_of_node_modules depende de la plantilla que utilizas, en su mayoría solo node_modules , pero a veces cuando index.html está en un subdirectorio necesitas usar, ../node_modules


Actualmente estoy trabajando en una ventana emergente jQuery: https://github.com/seahorsepip/jPopup

Tiene todo lo que esperarías de una ventana emergente y más: D

De todos modos, volviendo al tema, actualmente estoy escribiendo la versión 2, que es una gran reescritura y agrega soporte para IE6 (la versión 1 era IE7 +) y me encontré con un error similar ...

Código original que dio el error en IE6:

//Insane code for an insane browser this._vars.fakeScrollbar = $("<div style=/"position:absolute;top:expression(document.documentElement.scrollTop);right:0;bottom:0;margin-left:-200px;width:0;overflow-y:scroll;height:expression(document.documentElement.clientHeight);z-index:9999999;/"></div>");

El truco que tuve que idear:

//Insane code for an insane browser this._vars.fakeScrollbar = $("<div>"); this._vars.fakeScrollbar.html("<div style=/"position:absolute;top:expression(document.documentElement.scrollTop);right:0;bottom:0;margin-left:-200px;width:0;overflow-y:scroll;height:expression(document.documentElement.clientHeight);z-index:9999999;/"></div>"); this._vars.fakeScrollbar = this._vars.fakeScrollbar.children();


Básicamente, Object.assign no es compatible con todos los navegadores, sin embargo, es posible volver a asignarlo en caso de que no sea compatible con el navegador actual.

Es una práctica para realizar una función de relleno, que se comporta de la misma manera que Object.assign(target, ...) de ES6.

Creo que la mejor solución es repetir cada argumento después del target , asignar cada propiedad de los objetos de los arguments al target , considerando una iteración entre objetos y matrices, para evitar la creación de referencias. Opcionalmente, para no perder instancias, puede detectar si la última instancia de la propiedad es solo igual a "Array" u "Object" , y al hacerlo no perderá una interfaz de Image (por ejemplo) si planea crear nuevas referencias , pero los objetos con estas instancias seguirán siendo referencia.

Editar : el Object.assign original no funciona de esta manera.

De acuerdo con esta solución, tengo mi propio relleno que se puede encontrar here .


Como etiquetó la pregunta con jQuery, puede usar la función jQuery extend . No es necesario un relleno de poliuretano y también se fusiona en profundidad.

Por ejemplo:

var object1 = { apple: 0, banana: { weight: 52, price: 100 }, cherry: 97 }; var object2 = { banana: { price: 200 }, durian: 100 }; // Merge object2 into object1 $.extend( object1, object2 );

Resultado:

{"apple":0,"banana":{"price":200},"cherry":97,"durian":100}


Como otros han mencionado, el método Object.assign() no es compatible con IE, pero hay un polyfill disponible, simplemente inclúyalo "antes" de su declaración de plugin:

if (typeof Object.assign != ''function'') { Object.assign = function(target) { ''use strict''; if (target == null) { throw new TypeError(''Cannot convert undefined or null to object''); } target = Object(target); for (var index = 1; index < arguments.length; index++) { var source = arguments[index]; if (source != null) { for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } } return target; }; }

Desde Object.assign()

Página de prueba: http://jsbin.com/pimixel/edit?html,js,output (simplemente elimine el polyfill para obtener el mismo error que está obteniendo en su página).




Una posible solución para este problema:

Agregue el script legacy.min.js antes de custombox.min.js

fuente: proyecto custombox github