Ответ 1
Слушайте DOMAttrModified
события. Получил идею этого ответа, этот jsFiddle работает в Firefox 8 ( если вы откроете консоль).
Свойство resize CSS3 может быть присвоено произвольным элементам. Я ищу способ определения такого изменения размера, скажем, divs (я не против, чтобы он работал только в FF на данный момент):
div {
resize: horizontal;
overflow: hidden;
}
К сожалению, событие onresize
, похоже, не запускается в div. Как я могу обнаружить в JavaScript, когда произошло такое изменение размера пользователя?
Изменить: FWIW Я открыл отчет об ошибке в Mozilla. Если вы хотите отследить его: https://bugzilla.mozilla.org/show_bug.cgi?id=701648
Слушайте DOMAttrModified
события. Получил идею этого ответа, этот jsFiddle работает в Firefox 8 ( если вы откроете консоль).
Изменение размера похоже на изменение стиля. Как таковой, это можно наблюдать с помощью MutationObserver.
let observer = new MutationObserver(function(mutations) {
console.log('mutations:', mutations);
});
let child = document.querySelector('textarea');
observer.observe(child, { attributes: true });
<textarea></textarea>
Поскольку событие resize
явно не работает (в настоящее время, по крайней мере), вы можете попробовать один из следующих альтернативных вариантов:
mousedown
, mousemove
и/или mouseup
, чтобы определить, был ли /t 24 изменен размер. Если вы хотите действительно мелкозернистый элемент управления, вы можете проверить в каждом событии mousemove
, сколько/если размер div был изменен. Если вам это не нужно, вы можете просто не использовать mousemove
вообще и просто измерить div
в mousedown
и mouseup
и выяснить, было ли оно изменено в последнем.setTimeout()
.Вы можете использовать класс ResizeSensor
css-element-query polyfill из
https://github.com/marcj/css-element-queries
Он позволяет вам вызывать функцию javascript при изменении размера для всех типов элементов, а не только для window
. Он устанавливает реальный датчик, а не javascript setTimeout
.
Используйте его следующим образом:
new ResizeSensor($('#myelement'), function() {
console.log("myelement size has changed");
});
Поддерживаемые браузеры: все вкл. IE6 +.
Согласно этот сайт, он работает только в Internet Explorer 9.
Попробуйте эту скрипту: http://jsfiddle.net/maniator/3Zva3/