JavaScript и доступность

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, указывающий на недопустимую ячейку памяти. Нулевой указатель буквально не указывает на в любом месте , который отличается от указаний на местоположение, которое оказывается недопустимым.)

21
задан cdeszaq 9 April 2012 в 14:55
поделиться

5 ответов

Если доступность является Вашей первоочередной задачей, всегда запускайте, веб-сайт, использующий совместимый стандартами (выберите Определение типа документа и придерживайтесь ее), HTML. Если это - веб-приложение (представления формы, и т.д.), удостоверьтесь, что формы будут работать с помощью просто HTTP, ДОБИРАЮТСЯ и POST. Как только у Вас есть полный веб-сайт/приложение, можно добавить биты CSS и JavaScript, пока сайт все еще функционирует, или с или с оба прочь.

самое важное понятие здесь Прогрессивное Улучшение . Вы добавляете дополнительные дополнительные свойства с помощью CSS/JavaScript, но веб-сайт / приложение будет функционировать отлично без также.

А большой инструмент для тестирования 508 , WAI, CSS прочь, JavaScript от попытки с помощью Веб-разработчик плагин для Firefox.

14
ответ дан 29 November 2019 в 21:54
поделиться

Я думаю, что ответ находится действительно в том, как Вы проектируете вещи. JQuery имеет возможность быть незаметным и поэтому доступным. Прием должен иметь дублирование вокруг Ваших вызовов Ajax, таким образом, браузеры без JavaScript могут все еще использовать Ваш сервис. Другими словами, везде, где у Вас есть ответы JavaScript, диалоговые окна, и т.д. у Вас должен быть ухудшенный эквивалент.

при учитывании доступности в виду и Вы правильно тестируете на оба варианта использования (JavaScript по сравнению с Не-JavaScript), необходимо быть в состоянии записать приложения, которые угождают обоим зрителям.

Пример ($ (документ) .ready вызов, опущенный для ясности и краткости:

<script>
  $("#hello").click(function(){
    alert("Hi");
  });
</script>
<a href="/say_hello.htm" id="hello">Say Hello</a>

А тривиальный пример, но в основном это только оценит событие JavaScript щелчка, если JavaScript будет поддерживаться. Иначе это будет работать как нормальная ссылка и переходить к say_hello.htm - Ваше задание, поскольку разработчик должен удостовериться, что оба результата обрабатываются для соответственно.

Hope, которая помогает!

2
ответ дан 29 November 2019 в 21:54
поделиться

Прогрессивное улучшение является, конечно, одним маршрутом, но незаметность не быть всеми и закончить всю доступность JavaScript, поскольку программы для чтения с экрана имеют тенденцию использовать браузеры в качестве основания для их работы. Так как те браузеры поддерживают JavaScript, сценарии на Вашей странице будут все еще работать. Это - конкретная проблема с Ajax, поскольку нажатие на одну часть страницы могло изменить другую часть страницы, о которой не знает программа для чтения с экрана.

Поскольку Ajax назревает, однако, методы создания, это доступный появляется. Изучите WAI-АРИЮ для современных методов создания Ajax AxsJAX доступного, и Google для хорошего способа реализовать его.


2
ответ дан 29 November 2019 в 21:54
поделиться

См.

, Вы могли бы также смотреть на FlashAid, хотя это далеко от идеального решения. (Но, если бы Вы использовали прогрессивное улучшение и только использовали Ajax, когда Flash присутствовал, и пользователь не использовал API доступности, у Вас могло бы быть разумное решение... для Windows.)

В конечном счете WAI-АРИЯ является решением. Это несколько поддерживается в (бете) JAWS 10 и Firevox, но это, конечно, не достаточно для всех сегодняшних пользователей.

2
ответ дан 29 November 2019 в 21:54
поделиться

JQuery имеет возможность быть незаметным и поэтому доступным. Прием должен иметь дублирование вокруг Ваших вызовов Ajax, таким образом, браузеры без JavaScript могут все еще использовать Ваш сервис. Другими словами, везде, где у Вас есть ответы JavaScript, диалоговые окна, и т.д. у Вас должен быть ухудшенный эквивалент.

Один способ сделать это для многократного использования кода, должен иметь "простую" страницу, вызывающую "функцию" (или независимо от того, что Вы используете для серверной логики), который можно назвать отдельно, возвратив JSON или XML.

Например: /static/myform.asp (в стороне сервера, 'включает' ту же логику как /ajax/myform.asp), тот способ, которым Вы использовали бы asp в качестве шаблонов django.

Конечно, с полнофункциональным звонком и платформой свиста, Вы могли сделать это намного легче (думайте о наличии HTML и xml 'шаблон' для того же представления в django), но та же идея применяется.

Сделав это, выполняя итерации по всем привязкам на документе готового использования jQuery и добавления onclick события с помощью собственной ссылки привязки, remplacing/static/ajax/мог сделать жизнь легче.

Кто-либо может думать о причинах этого, чтобы быть слишком большой нагрузки? Хотел бы знать, существует ли какой-либо серьезный дефект на этой 'дизайнерской идее'.

0
ответ дан 29 November 2019 в 21:54
поделиться
Другие вопросы по тегам:

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