Показать сообщение отдельно
Старый 23.03.2009, 18:14   #27  
xany is offline
xany
Участник
 
57 / 14 (1) ++
Регистрация: 03.03.2009
Адрес: Беларусь, Минск
Цитата:
Сообщение от Гуревич Денис Посмотреть сообщение
2 a33ik:
У меня и под 6-м и под 7-м IE Ваш код не работает. Вернее, работает так, как я описал выше. Мне конечно же было бы интересно почитать Ваше объяснение, почему он должен работать как-то иначе. Но поскольку изначальная цель была помочь человеку, то на этом тему можно было бы закрыть...
Но тут у меня созрело вот такое решение:

Код:
 
if(crmForm.FormType == 2 || crmForm.FormType == 3 || crmForm.FormType == 4) {
  var notesFrame = document.getElementById('notescontrol');
  var notesWindow = document.frames['notescontrol'];
  notesFrame.attachEvent('onreadystatechange', hideEditedFields);
  function hideEditedFields() {
    if(notesFrame.readyState != 'complete') {
      return; 
    }
    var newStyle = notesWindow.document.createStyleSheet();
    newStyle.addRule("TD.noteEditedField", "display:none");
    newStyle.addRule("TD.noteEditedtedField", "display:none");
  }
}
Код протестирован на живой системе и не имеет следующих проблем:

1. Ничего не произойдёт, если айфрейм с нотесами не загрузится за 2 секунды
Тут IFrame может грузиться сколько угодно, а поля "edited by" скроются сразу после загрузки.

2. При добавлении новых нотесов - в новодобавленных будет показано, кто редактировал.
Тут при добавлении не будет показано, кто редактировал.

3. Могут быть проблемы, если будут другие iframe на форме в плане адресации обащений к фрейму.
Тут обращение к IFrame не по индексу, а по id, поэтому на форме может быть сколько угодно других фрэймов, они никак не помешают.

Все таки в споре рождается истина. Спасибо за скрипт.