Когда обратное течение происходит в среде DOM?

Создайте метод расширения, который добавляет нулевой символ как проверку.

public bool IsNullOrWhitespaceOrHasNullChar(this string text)
{
   return string.IsNullOrWhiteSpace(text) || Regex.IsMatch(text, "\0");
}

Обратите внимание, что нулевой символ существует в любом месте строки, он будет найден и представлен как таковой, поэтому строка с "a \ 0" вернет true. Если это вызывает беспокойство, создайте тест, который проверяет полную строку \0.

50
задан GEOCHET 4 February 2009 в 06:00
поделиться

2 ответа

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

Кроме того, насколько я могу судить, в обеих статьях говорится об одном и том же.

В первой статье говорится, что перекомпоновка происходит, когда:

Когда вы извлекаете измерение, которое необходимо вычислить , например, при доступе к offsetWidth , clientHeight или любое вычисленное значение CSS (через getComputedStyle () в DOM-совместимых браузерах или currentStyle в IE), в то время как изменения DOM ставятся в очередь для внесения.

Во второй статье говорится:

Как было сказано ранее , браузер может кэшировать для вас несколько изменений и перекомпоновывать только один раз, когда все эти изменения были внесены. Однако, обратите внимание, что измерение элемента заставит его оплавиться , так что измерения будут правильными. Изменения могут быть перерисованы, а могут и не быть визуально перерисованы, но сама перекомпоновка все равно должна происходить за кулисами.

Этот эффект создается, когда измерения производятся с использованием таких свойств, как offsetWidth , или таких методов, как getComputedStyle . Даже если числа не используются, простого использования любого из них, пока браузер все еще кэширует изменения, будет достаточно, чтобы запустить скрытую перекомпоновку. Если эти измерения проводятся неоднократно, вам следует подумать о том, чтобы сделать их только один раз и сохранить результат, который затем может быть использован позже.

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

45
ответ дан 7 November 2019 в 11:07
поделиться
document.body.style.display = 'none';
document.body.style.display = 'block';

Это часто решает те непостижимые ошибки расположения.

1
ответ дан I.devries 7 November 2019 в 21:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: