Текущее время: Вт, авг 05 2025, 05:29

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 2 ] 
Автор Сообщение
 Заголовок сообщения: JavaSript в WAD: событие onLoad для обработки данных
СообщениеДобавлено: Вт, июл 27 2010, 09:46 
Ассистент
Ассистент

Зарегистрирован:
Вт, дек 12 2006, 11:29
Сообщения: 44
Откуда: Столица
Добрый день,

Вопрос такой:

Для замены # на пустое значение, а так же, для небольшого оформления, создал функцию на JavaScript.
Функцию поместил в веб-элементе "Сценарий" в разделе иное.
Далее, в самом шаблоне, в теге body добавил событие onLoad.

Поведение системы:
Отчет отображается корректно, все замены срабатывают. Но, при попытки свернуть узел иерархии или при ином действии - отчет получает первоначальный вид и функция не запускается(подозреваю, что обновляется элемент страницы, без обращения к тэгу body).

Пробовал второй варинат - включил функцию внизу шаблона, после строки
<!-- insert data providers, items and other template content here -->
вставил JavaScript
Code:
window.onload = function() { ModifyData(); }


В этом месте функция начала срабатывать всегда, т.е. так, как нужно. Но с единственной загвоздкой: она блокирует все остальное :(
Т.е. и всплывающие меню, и даже кнопку экспорта в эксель. По нажатию на любое действие выпадает моя функция(подозреваю, что window.onload срабатывает на все всплывающие окна, хотя чего тут такого?).

Вопрос такой:
Как мне теперь совместить все это - и функцию сохранить и обработку стандартных скриптов тоже.

Заранее благодарен за ответ.
С уважением.


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: JavaSript в WAD: событие onLoad для обработки данных  Тема решена
СообщениеДобавлено: Вт, июл 27 2010, 10:25 
Ассистент
Ассистент

Зарегистрирован:
Вт, дек 12 2006, 11:29
Сообщения: 44
Откуда: Столица
Вопрос решил с помощью второго своего варианта с модификацией.

Может кому пригодится.

JavaScript загрузка есть та, которую использует система, а есть моя.
Я теперь не подменяю на свою, а добавляю ее:

1) добавляю строку
<!-- insert data providers, items and other template content here -->
Code:
<script type="text/javascript" >addLoadEvent(ModifyData);</script>


2) в редакторе скриптов пишу
Code:
function ModifyData( ) {
  var Elements=document.getElementsByTagName('td');
  for(var i=0;i<Elements.length;i++) {
    if(Elements[i].innerText=='#') {
      if (Elements[i].innerHTML.charAt(1) == 'T' ) {
        Elements[i].innerHTML = Elements[i].innerHTML.replace('>#<','> <');
      } else {
        Elements[i].innerText=' ';
        Elements[i].style.whitespace='nowrap';
      }
    }
  }
}

(заменяю # на пустые значения)

Code:
function addLoadEvent(func) {   
  var oldonload = window.onload;   
  if (typeof window.onload != 'function') {   
    window.onload = func;   
  } else {   
    window.onload = function() {   
      if (oldonload) {   
        oldonload();   
      }   
       func();   
    }
  }   
}   


и работает и мое и стандарт :)

Решение нашел в примере по JavaScript вот здесь - Using Multiple JavaScript Onload Functions.


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 2 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: Ahrefs [Bot], Yandex [Bot]


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB