2012-03-07 5 views
2

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

как код ниже: http://jsfiddle.net/marstone/7zaRT/8/

вы можете щелкнуть зеленую область, чтобы изменить размер div, а затем размер документа. Однако событие onresize не будет запущено.

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

любого обходной путь? любая помощь оценивается.

ответ

0

Это должно сделать трюк:

$(document).bind('DOMSubtreeModified', function(e) { 
alert("Bazinga!"); 
console.log(e); 
​});​ 

Заметим, однако, что она имеет тенденцию к огню чрезмерно, но я оставлю это вам фигура, как это могло вписаться в ваше приложение.

http://jsfiddle.net/pratik136/7zaRT/12/

+1

спасибо! который работает для меня в Chrome & FF, но не в IE. – marstone

+0

Единственный способ в IE - это грубый способ: http://stackoverflow.com/q/1218445/476786 Где вы постоянно проводите опрос своих 'DOM' для проверки изменений. Вы можете взломать это, чтобы обнаружить изменение размера видового экрана. Попробуйте экспериментировать с полосами прокрутки и их относительными изменениями положения. О, и если этот ответ помог, отметьте его как принятый :) – bPratik

2

События изменения размера доступны только на объектах Windows, как вы сказали. Вы можете использовать jquery-resize plugin, чтобы добавлять события изменения размера элементов DOM, но советуйте им внедрить механизмы опроса, чтобы отслеживать размеры элементов. Из-за этого вы всегда должны привязывать событие к элементу, который вы хотите просмотреть (делегат не работает, поскольку на DOM не помещается никакого реального события).

До сих пор я использовал этот плагин пару раз, без каких-либо сбоев. Я не знаю, реализуют ли другие плагины тот же самый механизм, но я уверен, что все они полагаются на механизм опроса как этот.

+0

спасибо! но мой проект не может использовать jquery по какой-то причине. Я бы сам реализовал этот механизм. Я хочу найти легкое взвешенное решение – marstone

Смежные вопросы