IE8 неправильно отображает изображение Raphaeljs в jquery-ui-диалоге - PullRequest
0 голосов
/ 09 августа 2011

Я создаю веб-страницу, которая открывает диалоговое окно jquery-ui с формой, заполненной некоторыми данными, поступающими из вызова AJAx. Одно из этих чисел используется для рисования прямоугольника, заполненного Рафаэлем. Порядок операций

  1. AJAX Call
  2. заполнить форму с DOM звонками
  3. нарисовать фигуру Рафаэля
  4. Показать диалог JQuery-UI

вот код:

function onSelect_manuale(feature) {
  if (window.XMLHttpRequest){ // code for IE7+, Firefox, Chrome, Opera, Safari
    xmlhttp2=new XMLHttpRequest();
  }
  else{ // code for IE6, IE5
    xmlhttp2=new ActiveXObject("Microsoft.XMLHTTP");
  }
  xmlhttp2.onreadystatechange=function(){
    if (xmlhttp2.readyState==4 && xmlhttp2.status==200){
      obj = jQuery.parseJSON(xmlhttp2.responseText);

      document.getElementById("valMed").value = obj.valMed;
      disegnaBarraCampo(obj.valMed, 'raphaelImageDiv');
      $( "#dialog-manuale" ).dialog('open');

    }
  }
  xmlhttp2.open("GET","jGetData_manuale.php?id="+feature.data.idMisura,true);
  xmlhttp2.send();
}

и

function disegnaBarraCampo(field_value, target_field) {
  document.getElementById(target_field).innerHTML = '';
  var paper = Raphael(target_field, 300, 100);

  var barrettaVerde = paper.rect(field_value, 10, 100, 100, 4);
  barrettaVerde.attr({
    fill:'#00ff00',
    'stroke-width':0
  });
}

С Firefox или Chrome все работает отлично. IE8 неправильно отображает фигуру Рафаэля: он показывает прямоугольник без цветовой заливки и с черной рамкой 1px.

Тот же самый код Raphael правильно отображает рисунок в IE8, если я помещаю код вне диалогового окна, поэтому я думаю, что это своего рода проблема в диалоге Raphael + iquery-ui.

Есть подсказка?

спасибо

альберто

1 Ответ

1 голос
/ 10 августа 2011

вот решение!

выполнить код рисования Рафаэля после открытия jquery-ui-диалогового окна.

  1. AJAX Call
  2. заполнить форму с DOM звонками
  3. Показать JQuery-UI-диалог
  4. нарисовать фигуру Рафаэля
...