неотключаемый работает в Firefox / Chrome / Safari, не работает IE8 - PullRequest
1 голос
/ 26 января 2011

Мне нужно иметь возможность предотвратить выбор изображения (помещенного в DIV). Я пробовал много предложений, но ни один, кажется, не работает на IE8. Дело в том, что когда пользователь выделяет текст мышью, в IE8 (и только в IE8) изображение также выделяется. Оказалось, что проще всего загрузить пример в Интернет (а не сюда), чтобы его можно было найти в http://www.enosis -dev.com / select.html нажмите просмотреть исходный код, чтобы увидеть код. Любая помощь будет оценена. Nir.

Ответы [ 2 ]

2 голосов
/ 26 января 2011

Используйте <div> с фоновым изображением вместо <img>. Если рассматриваемое изображение имеет размер 100 на 50 пикселей (например), то что-то вроде этого должно сработать:

<div style="display: inline-block; width: 100px; height: 50px: background: url(/path/to/image.jpg);"></div>

Если вам требуется поддержка IE7, вам, вероятно, придется изменить display: inline-block на display: block, используя таблицу стилей, специфичную для IE7 (желательно загруженную с помощью условного комментария).

Проблема с вышесказанным заключается в том, что вам необходимо знать размеры изображения, прежде чем заменять теги <img> тегами <div> на фон. Вы можете выполнить замену на стороне клиента, используя jQuery, чтобы обойти эту проблему, но для обеспечения загрузки изображений перед их заменой требуется некоторая осторожность:

$(window).load(function() {
    $('img').each(function() {
        var $img         = $(this);
        var $replacement = $('<div/>');
        $replacement.css({
            width:      $img.width()  + 'px',
            height:     $img.height() + 'px',
            display:    'inline-block',
            background: 'url(' + $img.attr('src') + ')'
        });
        $img.after($replacement).remove();
    });
});

$(window).load() не должен срабатывать до тех пор, пока все не будет загружено, поэтому все размеры изображений должны быть известны при этом.

Если IE7 является проблемой, вы можете поместить бит display: inline-block в класс и переопределить его, используя таблицу стилей, специфичную для IE7, обычным способом.

0 голосов
/ 07 мая 2013

Tryele.onselectstart = function () {return false;}ele.unselectable = "on";

Или попробуйтевыбор пользователя: нет;-webkit-user-select: нет;-o-user-select: нет;-moz-user-select: нет;

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...