воскресенье, февраля 18, 2007

Странности UriBuilder.Query

Из MSDN:
«UriBuilder.Query - Gets or sets any query information included in the URI.»

Странно то, что если мы присваеваем этом свойству значение, то к новому значению в начало добавляется «?». Причем делается это в любом случае, даже если новое значение уже начинается с «?» (проверял через Reflector). В результате, если я хочу к существующему Query добавить параметр, то нужно написать вот такой странный код:

uriBuilder.Query = uriBuilder.Query.Substring(1) + "&param1=some_value";


Ярлыки: ,

пятница, февраля 02, 2007

Определение координат самой правой видимой в окне браузера точки

Улучшая поведение меню FeedКнопки (см. предыдущий пост) столкнулся с проблемой: как определить координаты самой правой видимой в окне браузера точки (или самой нижней)? Да еще что бы это работало в IE, FireFox и Opera.

Решение для Internet Explorer:

Объект, представляющий весь контент окна в разных режимах рендеринга разный. Делаем служебную функцию, возвращающую нужный элемент:

function GetIEDocumentElement()
{
return (document.compatMode && document.compatMode != "BackCompat") ? document.documentElement : document.body;
}

Теперь определяем адрес самой правой видимой в окне браузера точки (самая нижняя определяется по аналогии):

var rightEdge = GetIEDocumentElement().scrollLeft + GetIEDocumentElement().clientWidth;

 

Для FireFox и Oper'ы проще:

var rightEdge = window.pageXOffset + window.innerWidth;

Ярлыки: ,

четверг, января 18, 2007

Пустое пространство после IMG в Internet Explorer

Вот такой простой код работает по разному в IE и FireFox:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head><title></title></head>
<body>
<div style="border: solid 1px black">
<img src="search_button.png" />
</div>

</body>
</html>

В Internet Explorer после картинки неожиданно появляется пустое пространство, а в FireFox'е никаких пустых пространств.

Лечится проблема двумя способами
1. Убираем все пробелы и переносы строк между img и зарывающим div. Не всегда можно применить, особенно когда используются ASP.NET контролы и img и div находятся в разных контролах.
2. Прописываем стиль display:block к img.

Ярлыки: ,