Многие объяснения уже присутствуют, чтобы объяснить, как это происходит и как это исправить, но вы также должны следовать рекомендациям, чтобы избежать NullPointerException
вообще.
См. также: A хороший список лучших практик
Я бы добавил, очень важно, хорошо использовать модификатор final
. Использование "окончательной" модификатор, когда это применимо в Java
Сводка:
final
для обеспечения хорошей инициализации. @NotNull
и @Nullable
if("knownObject".equals(unknownObject)
valueOf()
поверх toString (). StringUtils
StringUtils.isEmpty(null)
. Изображения могут быть выбраны также.
Существуют пределы использованию JavaScript для отмены выбора текста, как это могло бы произойти даже в местах, где Вы хотите выбрать. Для обеспечения богатой и успешной карьеры избегайте всех требований, чтобы способность к потребности влиять или управлять браузером вне дежурного блюда..., если, конечно, они не платили Вам чрезвычайно хорошо.
Абсолютно отделения положения по текстовой области с z-индексом выше и дают этим отделениям прозрачный фоновый рисунок GIF.
Отметьте после немного более размышления - у Вас должны были бы быть эти 'покрытия' быть связанными настолько нажимающие на них, возьмет Вас туда, где вкладка, как предполагалось, что означает, что Вы могли сделать это с набором элемента привязки к display:box
, ширина и набор высоты, а также изображение прозрачного фона.
Для Safari, -khtml-user-select: none
, точно так же, как Mozilla -moz-user-select
(или, в JavaScript, target.style.KhtmlUserSelect="none";
).
Если это выглядит плохо, можно использовать CSS для изменения появления выбранных разделов.
Я нахожу некоторый уровень успеха с CSS описанным здесь http://www.quirksmode.org/css/selection.html:
::selection {
background-color: transparent;
}
Это заботилось о большинстве проблем, которые я имел с некоторым ThemeRoller ul
элементы в приложении AIR (механизм WebKit). Все еще получая маленькое (приблизительно 15 x 15) патч небытия, которое выбрано, но половина страницы выбиралась прежде.
Для Firefox можно применить объявление CSS "-moz-user-select" ни к "одному". Проверьте их документацию, пользовательский выбор.
Это - "предварительный просмотр" будущего "пользовательского выбора", как они говорят, поэтому возможно, Opera или основанные на WebKit браузеры будут поддерживать это. Я также вспоминаю нахождение чего-то для Internet Explorer, но я не помню что :).
Так или иначе, если это не определенная ситуация, где выбор текста делает некоторый динамический сбой функциональности, Вы не должны действительно переопределять то, что пользователи ожидают от веб-страницы, и это - способность выбрать любой текст, который они хотят.
Попробуйте это:
<div onselectstart="return false">some stuff</div>
Простой, но эффективный... работает в текущих версиях всех главных браузеров.
Для примера того, почему могло бы быть желательно подавить выбор, посмотрите Временную шкалу СРАВНЕНИЯ, которая использует перетаскивание для исследования временной шкалы, во время которой случайное вертикальное движение мыши заставляет маркировки быть неожиданно выделенными, который выглядит странным.
<script type="text/javascript">
/***********************************************
* Disable Text Selection script- © Dynamic Drive DHTML code library (www.dynamicdrive.com)
* This notice MUST stay intact for legal use
* Visit Dynamic Drive at http://www.dynamicdrive.com/ for full source code
***********************************************/
function disableSelection(target){
if (typeof target.onselectstart!="undefined") //IE route
target.onselectstart=function(){return false}
else if (typeof target.style.MozUserSelect!="undefined") //Firefox route
target.style.MozUserSelect="none"
else //All other route (ie: Opera)
target.onmousedown=function(){return false}
target.style.cursor = "default"
}
//Sample usages
//disableSelection(document.body) //Disable text selection on entire body
//disableSelection(document.getElementById("mydiv")) //Disable text selection on element with id="mydiv"
</script>
Править
Код, по-видимому, прибывает из http://www.dynamicdrive.com
Следующее работает в Firefox довольно интересно, если я удалю строку записи, это не сработает. Кто-нибудь знает, зачем нужна линия записи.
<script type="text/javascript">
document.write(".");
document.body.style.MozUserSelect='none';
</script>
Любой метод JavaScript или CSS легко обойти с помощью Firebug (как в случае с Flickr).
Вы можете использовать псевдоэлемент :: selection
в CSS для изменения цвета выделения.
Если вкладки являются ссылками, а пунктирный прямоугольник в активном состоянии вызывает беспокойство, вы также можете удалить его (конечно, учитывайте удобство использования).