Как отменить выделения
Хочу отменить возможность выделений дочерних элементов у родителя
...
parent.onmousedown = parent.onselectstart = function() {
return false;
}
но при этом исключить это правило для некоторых дочерних элементов. Можно было бы назначить функцию выше на каждый элемент индивидуально, но я так не хочу. Как это сделать? |
Вот пример
<!DOCTYPE HTML> <html> <head> </head> <body onmousedown="return false" onselectstart="return false"> <div style="background:#f00; width:200px; margin:4px;">Запретить выделение</div> <div style="background:#f00; width:200px; margin:4px;">Запретить выделение</div> <div style="background:#0f0; width:200px; margin:4px;" id="on2">Разрешить выделение</div> <div style="background:#f00; width:200px; margin:4px;">Запретить выделение</div> <div style="background:#f00; width:200px; margin:4px;">Запретить выделение</div> <div style="background:#f00; width:200px; margin:4px;">Запретить выделение</div> <div style="background:#f00; width:200px; margin:4px;">Запретить выделение</div> <div style="background:#0f0; width:200px; margin:4px;" id="on1">Разрешить выделение</div> <div style="background:#f00; width:200px; margin:4px;">Запретить выделение</div> <div style="background:#f00; width:200px; margin:4px;">Запретить выделение</div> <div style="background:#f00; width:200px; margin:4px;">Запретить выделение</div> </body> </html> |
Цитата:
<body onmousedown="return false;"> |
devote,
да, писал сходу, методом проб и ошибок :) |
Так же хотел бы узнать, зачем использовать onselectstart? Ведь ie понимает onmousedown.
|
Цитата:
|
спасибо!
а как исключить эти события для некоторых вложенных элементов? |
Ну хоть кто-нибудь....... :help:
|
:help: :help: :help: :help: :help: :help:
ну неужели нужно будет отменять функцию выделения у каждого элемента индивидуально?? У меня тысяча дочерних элементов, и только в двух нужно дать возможность выделять! Мне надо 998 раз писать эту хрень :
...
child.onmousedown = child.onselectstart = function() {
return false;
}
ХЕЕЕЕЕЛП!!! :help: :help: :help: :help: :help: :help: :help: :help: :help: |
:write:
Сделал, работает:
<!DOCTYPE HTML>
<html>
<head>
</head>
<body onmousedown="return false" onselectstart="return false">
<div style="background:#f00; width:200px; margin:4px;">Запретить выделение</div>
<div style="background:#f00; width:200px; margin:4px;">Запретить выделение</div>
<div style="background:#0f0; width:200px; margin:4px;" id="on2">Разрешить выделение</div>
<div style="background:#f00; width:200px; margin:4px;">Запретить выделение</div>
<div style="background:#f00; width:200px; margin:4px;">Запретить выделение</div>
<div style="background:#f00; width:200px; margin:4px;">Запретить выделение</div>
<div style="background:#f00; width:200px; margin:4px;">Запретить выделение</div>
<div style="background:#0f0; width:200px; margin:4px;" id="on1">Разрешить выделение</div>
<div style="background:#f00; width:200px; margin:4px;">Запретить выделение</div>
<div style="background:#f00; width:200px; margin:4px;">Запретить выделение</div>
<div style="background:#f00; width:200px; margin:4px;">Запретить выделение</div>
<script>
document.getElementById("on2").onmousedown = function (event) {
event.stopPropagation();
};
document.getElementById("on2").onselectstart = function (event) {
event.stopPropagation();
};
</script>
<script>
document.getElementById("on1").onmousedown = function (event) {
event.stopPropagation();
};
document.getElementById("on1").onselectstart = function (event) {
event.stopPropagation();
};
</script>
</body>
</html>
Объясните почему работает? event.stopPropagation() блокирует всплытие, а тут наоборот вроде как :blink: |
Цитата:
P.S. в ИЕ работает? |
Цитата:
в ie<9 нет конечно :) В остальных не проверял |
dmitry111,
можно сделать и для ИЕ 9> ща попробую |
dmitry111,
проверь в ИЕ (у меня линукс я не могу посмотреть:) )
<html>
<head>
</head>
<body>
<div style="background:#f00; width:200px; margin:4px;">Запретить выделение</div>
<div style="background:#f00; width:200px; margin:4px;">Запретить выделение</div>
<div style="background:#0f0; width:200px; margin:4px;" id="on2">Разрешить выделение<div>loloooooooool</div></div>
<div style="background:#f00; width:200px; margin:4px;">Запретить выделение</div>
<div style="background:#f00; width:200px; margin:4px;">Запретить выделение</div>
<div style="background:#f00; width:200px; margin:4px;">Запретить выделение</div>
<div style="background:#f00; width:200px; margin:4px;">Запретить выделение</div>
<div style="background:#0f0; width:200px; margin:4px;" id="on1">Разрешить выделение</div>
<div style="background:#f00; width:200px; margin:4px;">Запретить выделение</div>
<div style="background:#f00; width:200px; margin:4px;">Запретить выделение</div>
<div style="background:#f00; width:200px; margin:4px;">Запретить выделение</div>
<script>
document.body.onmousedown = document.body.onselectstart = function (e){
var e = e || window.event;
var target = e.target || e.srcElement;
try{(function (tar, mass) {
for (var i = 0; i < mass.length; i++) {
if (mass[i] == tar || mass[i].contains(tar)) return true;
}
return false;
})(target, [document.getElementById("on2")]);
}
catch (exp) {
console.log(exp);
}
}
</script>
</body>
</html>
|
ой туплю, у ИЕ есть canceBabble
element.onclick = function(event) {
event = event || window.event; // Кроссбраузерно получить событие
if (event.stopPropagation) { // существует ли метод?
// Стандартно:
event.stopPropagation();
} else {
// Вариант IE
event.cancelBubble = true;
}
}
|
у меня os x, не могу :)
Dim@, последняя должна работать! |
dmitry111,
да :) |
| Часовой пояс GMT +3, время: 21:09. |