Показать сообщение отдельно
  #1 (permalink)  
Старый 04.04.2020, 14:29
Новичок на форуме
Отправить личное сообщение для Ekaterina8888 Посмотреть профиль Найти все сообщения от Ekaterina8888
 
Регистрация: 04.04.2020
Сообщений: 3

Proxy объекта DOM: ошибка Illegal invocation при изменении style
Добрый день!
Есть функция, создающая proxy:

function watchObj(node, callback){
	 return new Proxy(node, {
		 set (target, name, value){
			 target[name] = value;
			 callback(name, value); 
			 return true;
			 }
	 });
 } 
 
 
let div = document.createElement('div');
document.body.appendChild(div);

let cleverDiv = watchObj(div, function(prop, val){
console.log(prop, val);
});

При измении свойства самого объекта (innerHTML) все работает корректно:
cleverDiv.innerHTML = '<strong>HTML</strong><em>Changed</em>'; // в консоли innerHTML <strong>HTML</strong><em>Changed</em>


При измении свойства внутреннего объекта Style - ошибка:
cleverDiv.style.color = 'red'; // Uncaught TypeError: Illegal invocation


Понимаю, что теряется контекст, но не понимаю, как исправить. Помогите, пожалуйста
Ответить с цитированием