#html #javascript #css
Как кросбразерно запретить выделение элементов на вебстранице в определённом блоке?
Ответы
Ответ 1
Это останавливает выделение! У меня в Drag&Drop работает так. elem.onselectstart = function() { return false; };Ответ 2
*[unselectable=on] { -moz-user-select: none; -o-user-select:none; -khtml-user-select: none; -webkit-user-select: none; -ms-user-select: none; user-select: none; } для IE unselectable="on"Ответ 3
.no-select { pointer-events: none; } Или: .no-select { user-select: none; }Ответ 4
Поставьте div в position: absolute; и слоем выше всех остальных элементов. Смотрите пример HTML CSS html, body { width: 100%; height: 100%; margin: 0; padding: 0; } #cover { position: absolute; z-index: 99; width: 100%; height: 100%; top: 0; left: 0; right: 0; bottom: 0; }Ответ 5
Человек уже давал ссылку на хабр. Их решение работает! Вот оно: function preventSelection(element){ var preventSelection = false; function addHandler(element, event, handler){ if (element.attachEvent) element.attachEvent('on' + event, handler); else if (element.addEventListener) element.addEventListener(event, handler, false); } function removeSelection(){ if (window.getSelection) { window.getSelection().removeAllRanges(); } else if (document.selection && document.selection.clear) document.selection.clear(); } function killCtrlA(event){ var event = event || window.event; var sender = event.target || event.srcElement; if (sender.tagName.match(/INPUT|TEXTAREA/i)) return; var key = event.keyCode || event.which; if (event.ctrlKey && key == 'A'.charCodeAt(0)) // 'A'.charCodeAt(0) можно заменить на 65 { removeSelection(); if (event.preventDefault) event.preventDefault(); else event.returnValue = false; } } // не даем выделять текст мышкой addHandler(element, 'mousemove', function(){ if(preventSelection) removeSelection(); }); addHandler(element, 'mousedown', function(event){ var event = event || window.event; var sender = event.target || event.srcElement; preventSelection = !sender.tagName.match(/INPUT|TEXTAREA/i); }); // борем dblclick // если вешать функцию не на событие dblclick, можно избежать // временное выделение текста в некоторых браузерах addHandler(element, 'mouseup', function(){ if (preventSelection) removeSelection(); preventSelection = false; }); // борем ctrl+A // скорей всего это и не надо, к тому же есть подозрение // что в случае все же такой необходимости функцию нужно // вешать один раз и на document, а не на элемент addHandler(element, 'keydown', killCtrlA); addHandler(element, 'keyup', killCtrlA); }Ответ 6
Тут полный ответ - https://stackoverflow.com/a/4407335/7580988 According to Can I use, the user-select is currently supported in all browsers except Internet Explorer 9 and earlier versions (but sadly still needs a vendor prefix). All of the correct CSS variations are: .noselect { -webkit-touch-callout: none; /* iOS Safari */ -webkit-user-select: none; /* Safari */ -khtml-user-select: none; /* Konqueror HTML */ -moz-user-select: none; /* Firefox */ -ms-user-select: none; /* Internet Explorer/Edge */ user-select: none; /* Non-prefixed version, currently supported by Chrome and Opera */ }Selectable text.
Unselectable text.
http://www.bootply.com/m6kEm8DNIq
Комментариев нет:
Отправить комментарий