Какое управление повреждением страницы поддержки браузеров с помощью CSS и page-break-inside элемента?

NullPointerException s - исключения, возникающие при попытке использовать ссылку, которая указывает на отсутствие местоположения в памяти (null), как если бы она ссылалась на объект. Вызов метода по нулевой ссылке или попытка получить доступ к полю нулевой ссылки вызовет функцию NullPointerException. Они наиболее распространены, но другие способы перечислены на странице NullPointerException javadoc.

Вероятно, самый быстрый пример кода, который я мог бы придумать для иллюстрации NullPointerException, be:

public class Example {

    public static void main(String[] args) {
        Object obj = null;
        obj.hashCode();
    }

}

В первой строке внутри main я явно устанавливаю ссылку Object obj равной null. Это означает, что у меня есть ссылка, но она не указывает на какой-либо объект. После этого я пытаюсь обработать ссылку так, как если бы она указывала на объект, вызывая метод на нем. Это приводит к NullPointerException, потому что нет кода для выполнения в местоположении, на которое указывает ссылка.

(Это техничность, но я думаю, что она упоминает: ссылка, которая указывает на null, равна 't то же, что и указатель C, указывающий на недопустимую ячейку памяти. Нулевой указатель буквально не указывает на в любом месте , который отличается от указаний на местоположение, которое оказывается недопустимым.)

14
задан skaffman 25 February 2012 в 21:56
поделиться

4 ответа

Safari 1.3 + , Opera 9.2 + , Konquerer, и IE8 вся поддержка это, по крайней мере до некоторой степени.

Firefox по-видимому все еще не делает.

3
ответ дан 1 December 2019 в 15:13
поделиться

Safari 1.3 и позже поддержка page-break-inside.

Так делает Konqueror.

0
ответ дан 1 December 2019 в 15:13
поделиться

я пытаюсь использовать page-break-inside директиву CSS, класс которой быть присоединен к тегу Div или тегу таблицы (я думаю, что это может только работать над элементами блока, в этом случае это должна была бы быть таблица).

Во-первых, нет никакой потребности предположить. Только посмотрите спецификация , и Вы будете видеть, что она действительно только относится к элементам блочного уровня.

, Во-вторых, <div> элементы являются обычно элементами блочного уровня, таким образом, нет никакой проблемы, применяющейся page-break-inside к <div> элемент.

Наконец, Вы не должны переносить его в @media. Вам только нужно @media, если Вы хотите применить независимые от среды правила только к одному носителю, например, если Вы хотите использовать display: block только для одного носителя. В этом случае Вы не должны скрывать те правила от других медиа, потому что они будут только относиться к разбитым на страницы медиа так или иначе.

0
ответ дан 1 December 2019 в 15:13
поделиться

Safari 1.3 и более поздних версий (не знаю насчет 4) не поддерживает перенос страницы внутрь (попробуйте или посмотрите здесь: http: / /reference.sitepoint.com/css/page-break-inside). Ни Firefox 3, ни IE7 (не знаю о 8).

В практическом смысле поддержка этого атрибута НАСТОЛЬКО непостоянна, на данном этапе нет смысла использовать его вообще. Вам повезет, если хотя бы у 10% ваших посетителей есть браузеры, которые могут это поддерживать.

Я использовал решение, добавив

page-break-after: always

к определенным div или добавив " page-breaker "div в том месте, где вам нужны разрывы. Я знаю, что это довольно неуклюжее, потому что это не совсем то, что вы хотите, и приводит к тому, что контент не достигает нижней части распечатанной страницы, но, к сожалению, лучшего решения нет (докажите, что я ошибаюсь!).

Другой подход - создать таблицу стилей, которая удаляет все посторонние элементы ( display: none ) и заставляет основной контент перемещаться в один основной столбец. По сути, превратите его в одностолбцовый текстовый документ.

Наконец, избегайте float и columns при стилизации для принтеров, это может сделать IE (и FF) дурацким.

5
ответ дан 1 December 2019 в 15:13
поделиться
Другие вопросы по тегам:

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