Как удалить пространство, вставленное автоматически в элемент управления вкладки панели инструментов Ajax? - PullRequest
0 голосов
/ 29 марта 2010

Панель вкладок *1001* для инструментов управления Ajax автоматически вставляет пробел по всем четырем углам тела. Например, перейдите на http://www.asp.net/ajax/ajaxcontroltoolkit/Samples/Tabs/Tabs.aspx и посмотрите на панель вкладок на странице. Это пробел перед метками "Signature:" и "Bio:". Как я могу установить space-width в 0px; в теле вкладки панели?

1 Ответ

1 голос
/ 24 июля 2010

У меня была очень похожая проблема с пробелами между заголовками табуляции. Заголовки вкладок представляют собой теги <span>, поэтому большинство браузеров отображают пробелы в виде текстового узла в DOM. Чтобы удалить игнорируемые пробельные узлы, при загрузке страницы вызовите функцию JavaScript, например:

function fixTabContainer() {
    var tabContainerHeader = $get('<%#TabContainer1.ClientID%>' + '_header');
    var children = tabContainerHeader.childNodes;
    for (var i = 0; i < children.length; i++) {
        if (is_all_ws(children[i])) {
            tabContainerHeader.removeChild(children[i]);
            i--;
        }
    }
}

/**
 * Determine whether a node's text content is entirely whitespace.
 * (From https://developer.mozilla.org/en/whitespace_in_the_dom)
 * @param nod  A node implementing the |CharacterData| interface (i.e.,
 *             a |Text|, |Comment|, or |CDATASection| node
 * @return     True if all of the text content of |nod| is whitespace,
 *             otherwise false.
 */
 function is_all_ws(nod) {
     // Use ECMA-262 Edition 3 String and RegExp features
     return !(/[^\t\n\r ]/.test(nod.data));
 }

Скрипт находит <div>, который содержит заголовки вкладок и проходит по этим элементам заголовка <span>. Он удаляет все узлы, которые содержат только игнорируемые пробелы (которые он определяет с помощью второй функции).

Примечание. К сожалению, в DOM IE8 нет текстовых узлов (это известная ошибка).

...