gratis como chrome activar javascript jquery javascript-events

javascript - como - Object.watch() para todos los navegadores?



como activar javascript en chrome (7)

(Perdón por la publicación cruzada, pero esta respuesta que di a una pregunta similar funciona bien aquí)

He creado un pequeño objeto. Revisar esto hace un tiempo. Funciona en IE8, Safari, Chrome, Firefox, Opera, etc.

Estaba buscando una manera fácil de monitorear un objeto o una variable para los cambios, y encontré Object.watch() , que es compatible con los navegadores Mozilla, pero no con IE. Entonces comencé a buscar para ver si alguien había escrito algún tipo de equivalente.

Lo único que encontré fue un plugin jQuery , pero no estoy seguro de si es la mejor manera de hacerlo. Ciertamente uso jQuery en la mayoría de mis proyectos, así que no estoy preocupado por el aspecto jQuery ...

De todos modos, la pregunta: ¿alguien me puede mostrar un ejemplo de ese plugin jQuery? Tengo problemas para hacerlo funcionar ...

O, ¿alguien sabe de alguna alternativa mejor que funcione en el navegador cruzado?

Actualización después de las respuestas :

¡Gracias a todos por las respuestas! Probé el código publicado aquí: http://webreflection.blogspot.com/2009/01/internet-explorer-object-watch.html

Pero parece que no puedo hacer que funcione con IE. El siguiente código funciona bien en Firefox, pero no hace nada en IE. En Firefox, cada vez que se cambia watcher.status se watcher.status document.write() en watcher.watch() y se puede ver el resultado en la página. En IE, eso no sucede, pero puedo ver que watcher.status está actualizando el valor, porque la última llamada a document.write() muestra el valor correcto (tanto en IE como en FF). Pero, si no se llama a la función de devolución de llamada, entonces eso no tiene sentido ... :)

¿Me estoy perdiendo de algo?

var options = {''status'': ''no status''}, watcher = createWatcher(options); watcher.watch("status", function(prop, oldValue, newValue) { document.write("old: " + oldValue + ", new: " + newValue + "<br>"); return newValue; }); watcher.status = ''asdf''; watcher.status = ''1234''; document.write(watcher.status + "<br>");



Ese complemento simplemente usa un temporizador / intervalo para verificar repetidamente los cambios en un objeto. Quizás sea lo suficientemente bueno pero personalmente me gustaría tener más inmediatez como observador.

Aquí hay un intento de unwatch / watch IE: http://webreflection.blogspot.com/2009/01/internet-explorer-object-watch.html .

Cambia la sintaxis de la forma de Firefox de agregar observadores. En lugar de :

var obj = {foo:''bar''}; obj.watch(''foo'', fooChanged);

Tú lo haces:

var obj = {foo:''bar''}; var watcher = createWatcher(obj); watcher.watch(''foo'', fooChanged);

No tan dulce, pero como observador se te notifica inmediatamente.



Tenga en cuenta que en Chrome 36 y superior también puede usar Object.observe . Esto es en realidad una parte de un futuro estándar ECMAScript, y no una característica específica del navegador como Object.watch de Mozilla.

Object.observe solo funciona en las propiedades de los objetos, pero es mucho más Object.watch que Object.watch (que está destinado a la depuración, no a la producción).

var options = {}; Object.observe(options, function(changes) { console.log(changes); }); options.foo = ''bar'';


puede usar Object.defineProperty .

mira el bar la propiedad en foo

Object.defineProperty(foo, "bar", { get: function (val){ //some code to watch the getter function }, set: function (val) { //some code to watch the setter function } })