Вычисления перекрестного браузера iframe высота

Исключение нулевого указателя - это индикатор того, что вы используете объект, не инициализируя его.

Например, ниже - класс ученика, который будет использовать его в нашем коде.

public class Student {

    private int id;

    public int getId() {
        return this.id;
    }

    public setId(int newId) {
        this.id = newId;
    }
}

Приведенный ниже код дает вам исключение с нулевым указателем.

public class School {

    Student obj_Student;

    public School() {
        try {
            obj_Student.getId();
        }
        catch(Exception e) {
            System.out.println("Null Pointer ");
        }
    }
}

Поскольку вы используете Obj_Student, но вы забыли инициализировать его, как в правильном коде, показанном ниже:

public class School {

    Student obj_Student;

    public School() {
        try {
            obj_Student = new Student();
            obj_Student.setId(12);
            obj_Student.getId();
        }
        catch(Exception e) {
            System.out.println("Null Pointer ");
        }
    }
}
16
задан Zach Johnson 14 March 2011 в 23:27
поделиться

3 ответа

Хотя мне нравится Ваше решение, я всегда находил, что IFRAMEs больше проблемы, чем они стоят.

, Почему? 1. Проблема калибровки. 2. iframe имеет это, src приписывают беспокойству о. т.е. полный путь. 3. дополнительная сложность со страницами.

Мое решение - ОТДЕЛЕНИЯ, которые динамично загружаются через вызовы Ajax. ОТДЕЛЕНИЯ Будут автоматический размер. Хотя код Ajax требует работы JavaScript (который может быть сделан через платформы), они относительно того, где сайт. 3 промывка, Вы торгуете сложностью на страницах до JavaScript.

Вместо < IFRAME...> используйте < идентификатор DIV = "mystuff"/>

Делают вызов ajax, чтобы заполнить mystuff отделение данными и позволить браузеру волноваться об этом.

4
ответ дан 30 November 2019 в 23:24
поделиться

Вот решение, которое, кажется, работает. По сути, scrollHeight является правильным значением в большинстве случаев. Однако в IE (в частности, 6 и 7), если содержимое просто содержится в текстовых узлах, высота не рассчитывается, а просто устанавливается по умолчанию на высоту, заданную в CSS, или на атрибут «height» в iframe. Это было найдено методом проб и ошибок, поэтому возьмите его таким, какое оно стоит.

function getDocumentHeight(doc) {
  var mdoc = doc || document; 
  var docHeight = mdoc.body.scrollHeight;

  if ($.browser.msie) {
      // IE 6/7 don't report body height correctly.  
      // Instead, insert a temporary div containing the contents.

      var child = $("<div>" + mdoc.body.innerHTML + "</div>", mdoc);
      $("body", mdoc).prepend(child);
      docHeight = child.height();
      child.remove();
  }

  return docHeight;
}
0
ответ дан 30 November 2019 в 23:24
поделиться

Я обнаружил, что это решение работает, например, в версиях 6+, ff 3.5+, safari 4+. Я создаю и добавляю в документ iframe. Следующий код выполняется в конце события загрузки jQuery после некоторой другой манипуляции с dom. Тайм-аут необходим мне из-за дополнительных манипуляций с dom, происходящих в событии загрузки.

// sizing - slight delay for good scrollheight
setTimeout(function() {
   var intContentHeight = objContentDoc.body.scrollHeight;
   var $wrap = $("#divContentWrapper", objContentFrameDoc);
   var intMaxHeight = getMaxLayeredContentHeight($wrap);
   $this.height(intContentHeight > intMaxHeight ? intMaxHeight : intContentHeight);

   // animate
   fireLayeredContentAnimation($wrap);
}, 100);

У меня есть некоторые ограничения по размеру, которые нужно учитывать, это то, что для меня проверяет вызов getMaxLayeredContentHeight. Надеюсь, это поможет.

0
ответ дан 30 November 2019 в 23:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: