Как я могу программно выбрать элемент <img> с помощью JavaScript?

У меня есть <img> в HTML-документе, который я хотел бы выделить, как если бы пользователь выделил его с помощью мыши. Есть ли способ сделать это с помощью JavaScript?

Мне он нужен только для работы в Mozilla, но любая информация приветствуется.

Обновлено: Причина, по которой я хочу выбрать изображение, на самом деле не в том, чтобы оно выглядело выделенным, а в том, чтобы я мог затем скопировать выбранное изображение в буфер обмена с помощью XPCOM. Так что, чтобы это работало, на самом деле нужно выбрать img.

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
7
0
8 167
7
Перейти к ответу Данный вопрос помечен как решенный

Ответы 7

Вы можете поменять местами источник изображения, как в img.src = "otherimage.png";

Я действительно сделал это в какой-то момент, и есть вещи, которые вы можете сделать, чтобы предварительно загрузить изображения.

Я даже установил специальные атрибуты для элементов изображения, такие как swap-image = "otherimage.png", затем искал любые элементы, у которых он был, и настраивал обработчики для автоматической замены изображений ... вы можете делать кое-что забавное.


Извините, я неправильно понял вопрос! но в любом случае, для тех из вас, кто заинтересован в том, о чем я говорю, вот пример того, что я имею в виду (грубая реализация, я бы предложил использовать такие фреймворки, как jQuery, чтобы улучшить это, но просто что-то, что поможет вам начать):

<html>
<body>
<script language = "javascript">
function swap(name) {
  document.getElementById("image").src = name;
}
</script>
<img id = "image" src = "test1.png"
     onmouseover = "javascript:swap('test0.png');"
     onmouseout = "javascript:swap('test1.png');">
</body>
</html>

Спасибо, Майк. Я должен был быть более конкретным в том, что я собирался делать. Изображение не может просто выделиться. Это действительно должно быть выделено.

Joel Anair 24.09.2008 05:29

Дайте тегу img идентификатор. Используйте document.getElementById ('id').

<script type = "text/javascript" language = "javascript">
function highLight()
{
  var img = document.getElementById('myImage');
  img.style.border = "inset 2px black";
}
</script>
<img src = "whatever.gif" id = "myImage" onclick = "hightLight()" />

Обновлено:: Вы можете попробовать .focus, чтобы сфокусировать его.

Основная идея решения "highLight" хороша, но вы, вероятно, захотите установить "статический" стиль границы (определенный в css) для img с теми же размерами, что и размер, указанный в методе highLight, поэтому он не вызвать изменение размера.

Кроме того, я считаю, что если вы измените вызов на «highLight (this)», а функцию def на «highLight (obj)», то вы можете пропустить вызов «document.getElementById ()» (и спецификацию атрибут "id" для "img"), если вместо этого вы используете "obj.style.border".

Вероятно, вам также нужно правильно написать «highLight».

Ответ принят как подходящий

Вот пример, который выбирает первое изображение на странице (которое будет логотипом Stack Overflow, если вы протестируете его на этой странице в Firebug):

var s = window.getSelection()
var r = document.createRange();
r.selectNode(document.images[0]);
s.addRange(r)

Соответствующая документация:

Идеальный. Это именно то, что я ищу.

Joel Anair 24.09.2008 05:48

Что делать s.addRange(r)? Я тут боролся: stackoverflow.com/questions/42298386/…

Nirjhar Lo 22.02.2017 15:16

Что именно ты пытаешься сделать? Если вы используете XPCOM, вы, вероятно, пишете приложение или расширение для него; нельзя просто получить данные изображения и напрямую поместить их в буфер обмена?

Я пытаюсь скопировать изображение в буфер обмена, но это на удивление сложно сделать из XUL / JS / XPCOM. Пожалуйста, смотрите stackoverflow.com/questions/68103/…, если знаете как!

Joel Anair 24.09.2008 05:50

Мой личный выбор для выбора элементов - это jquery:

Затем, чтобы получить элемент по вашему выбору:

$ ("img # ВАШЕ ИЗОБРАЖЕНИЕ"). focus ();

Вы также можете вызвать s.removeAllRanges () перед s.addRange (r).

Другие вопросы по теме