Estoy usando javascript para deshabilitar la selección de texto en mi sitio web.
El codigo es:
<script type="text/JavaScript">
function disableselect(e) {
return false
}
function reEnable() {
return true
}
document.onselectstart = new Function ("return false")
if (window.sidebar) {
document.onmousedown = disableselect
document.onclick = reEnable
}
</script>
Se puede encontrar un script similar aquí
En mi localhost: todos los navegadores (Firefox, Chrome, IE y Safari) funcionan muy bien.
En mi sitio Live: Todo está bien EXCEPTO Firefox.
Mis preguntas son:
¿Alguien tiene alguna sugerencia de por qué Firefox se comporta de manera diferente para el sitio en vivo y el host local? Nota: Javascript está habilitado.
Tal vez mi script sea demasiado simplista, así que intenté lo siguiente con EXACTAMENTE LOS MISMOS resultados
javascript
arpegiar
fuente
fuente
user-select
sí sola no funcionará, requiere el prefijo "-vendor-", como-moz-user-select
y-webkit-user-select
, entonces, para que funcione , es necesario establecer todas las variaciones posibles ennone
).Respuestas:
Simplemente use este método CSS:
Puede encontrar la misma respuesta aquí: ¿Cómo deshabilitar el resaltado de selección de texto usando CSS?
fuente
Estoy escribiendo el control de la interfaz de usuario del control deslizante para proporcionar la función de arrastre, esta es mi manera de evitar que el contenido se seleccione cuando el usuario está arrastrando:
function disableSelect(event) { event.preventDefault(); } function startDrag(event) { window.addEventListener('mouseup', onDragEnd); window.addEventListener('selectstart', disableSelect); // ... my other code } function onDragEnd() { window.removeEventListener('mouseup', onDragEnd); window.removeEventListener('selectstart', disableSelect); // ... my other code }
ata
startDrag
en tu dom:<button onmousedown="startDrag">...</button>
Si desea deshabilitar estáticamente la selección de texto en todos los elementos, ejecute el código cuando se carguen los elementos:
window.addEventListener('selectstart', function(e){ e.preventDefault(); });
fuente
contenteditable
atributo (como si quisiera deshabilitar la selección de texto mientras el mouse del usuario cambia el tamaño del control).Para JavaScript, use esta función:
function disableselect(e) {return false} document.onselectstart = new Function (return false) document.onmousedown = disableselect
para habilitar la selección use esto:
function reEnable() {return true}
y use esta función en cualquier lugar que desee:
document.onclick = reEnable
fuente
new Function (return false)
que no es un código JavaScript válido. Utilice solodocument.onselectstart = disableselect
.document.oncontextmenu = new Function("return false;");
o esto usando CSS:<body onselectstart="return false">
new Function("return false;")
funcionaría, pero es innecesariamente complicado en comparación con el usodisableselect
que ya tiene.onselectstart="return false"
también funcionaría, pero no tiene nada que ver con CSS. También he notado que el resto de su respuesta también es incorrecta: lareEnable
función no funcionaría en absoluto.Si tiene una página html como esta:
Existe una forma sencilla de desactivar todos los eventos:
document.write(document.body.innerHTML)
Obtuviste el contenido html y perdiste otras cosas.
fuente
También se puede usar, funciona bien en todos los navegadores, requiere javascript:
onselectstart = (e) => {e.preventDefault()}
Ejemplo:
onselectstart = (e) => { e.preventDefault() console.log("nope!") }
Otra alternativa de js, probando los soportes de CSS y deshabilitando
userSelect
, oMozUserSelect
para Firefox.let FF if (CSS.supports("( -moz-user-select: none )")){FF = 1} else {FF = 0} (FF===1) ? document.body.style.MozUserSelect="none" : document.body.style.userSelect="none"
CSS puro, misma lógica. Advertencia, tendrá que extender esas reglas a todos los navegadores, esto puede ser detallado.
@supports (user-select:none) { div { user-select:none } } @supports (-moz-user-select:none) { div { -moz-user-select:none } }
<div>Select me!</div>
fuente
Simple Copia este texto y ponte el antes
</body>
function disableselect(e) { return false } function reEnable() { return true } document.onselectstart = new Function ("return false") if (window.sidebar) { document.onmousedown = disableselect document.onclick = reEnable }
fuente