Теги IMG SRC и JavaScript

Можно ли вызвать функцию JavaScript из тега IMG SRC, чтобы получить URL-адрес изображения?

Нравится:

<IMG SRC = "GetImage()" />

<script language = "javascript">
   function GetImage() {return "imageName/imagePath.jpg"}
</script>

Это использует .NET 2.0.

Вопрос на самом деле не описывает, чего вы пытаетесь достичь?

Ian 22.09.2008 23:33

Согласен - мне потребовалась минута, чтобы сообразить, к чему он клонит ...

Jason Bunting 23.09.2008 04:16
Поведение ключевого слова "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) для оценки ваших знаний,...
10
2
91 998
13
Перейти к ответу Данный вопрос помечен как решенный

Ответы 13

Нет. Атрибут SRC Img не является событием, поэтому встроенный JS никогда не сработает.

Однако он принимает URI и может запускать javascript: псевдо-URI. Это причина дыр XSS.

Quentin 27.08.2009 16:22

Вы не можете сделать это встроенным в изображение @src, но вы должны иметь возможность вызывать его из встроенного блока скрипта сразу после вашего изображения:

<img src = "" id = "myImage"/>
<script type = "text/javascript">
  document.getElementById("myImage").src = GetImage();
</script>

Opera не поддерживает встроенные теги скриптов? Это для меня новость.

levik 22.09.2008 23:38

На самом деле это далеко от истины. Рекомендуется размещать теги сценария как можно глубже на странице, поскольку рендеринг DOM откладывается до завершения выполнения сценария. Вы действительно можете ускорить воспринимаемое время загрузки страницы, разместив теги скрипта в конце вашего тела.

Chris MacDonald 22.09.2008 23:52
Ответ принят как подходящий

Неа. Это невозможно, по крайней мере, не во всех браузерах. Вместо этого вы можете сделать что-то вроде этого:

<img src = "blank.png" id = "image" alt = "just nothing">
<script type = "text/javascript">
    document.getElementById('image').src = "yourpicture.png";
</script>

Ваш любимый JavaScript-фреймворк предоставит более приятные способы :)

Вы ищете this.src? `

<img src='images/test.jpg' onmouseover = "alert(this.src);"> 

Поскольку вы используете .NET, вы можете добавить атрибут runat = "server" и установить src в коде.

Вы мог бы сможете сделать это на стороне сервера. В качестве альтернативы вы можете прикрепить событие onload, чтобы выгрузить изображение src. Думаю, тогда возникает вопрос: зачем вам в первую очередь использовать Javascript?

вы можете динамически загружать изображение, вызывая страницу aspx в SRC.

Бывший;

<img src = "provideImage.aspx?someparameter=x" />

На стороне страницы вам нужно будет поместить изображение в ответ и изменить тип содержимого для изображения.

Единственная «проблема» заключается в том, что ваши изображения не будут проиндексированы, и вам лучше разместить кеш на странице этого провайдера, иначе вы разоритесь на сервере.

Is it possible to call a JavaScript function from the IMG SRC tag to get an image url?

Вы имеете в виду сделать что-то вроде следующего?

<img src = "javascript:GetImage()" />

К сожалению, нет - вы не можете этого сделать. Однако вы можете сделать следующее:

function getImageUrl(img) {
   var imageSrc = "imageName/imagePath.jpg";
   if (img.src != imageSrc) { // don't get stuck in an endless loop
      img.src = imageSrc;
   }
}

Затем сделайте следующий HTML-код:

<img src = "http://yourdomain.com/images/empty.gif" onload = "getImageUrl(this)" />

Событие onload сработает только в том случае, если у вас есть фактическое изображение, установленное для атрибута src - если вы не установите этот атрибут или не установите для него пустую строку или что-то подобное, вы не получите любви. Установите для него однопиксельный прозрачный gif или что-то подобное.

В любом случае, этот прием работает, но в зависимости от того, чего вы действительно пытаетесь достичь, это может быть не лучшим решением. Я не знаю, зачем вам это нужно, но, возможно, у вас есть веская причина (которой вы хотели бы поделиться с нами!).

Мне приходилось делать что-то подобное раньше, и у IIRC трюк заканчивается тем, что вы не можете изменить атрибут src изображения, которое является частью дерева DOM. Итак, лучше всего написать свой HTML-скелет без изображения и 1) создать функцию onLoad, которая генерирует новый элемент img с помощью document.createElement, 2) установить атрибут src с помощью setAttribute () и 3) прикрепить его к вашей DOM дерево.

Событие OnLoad изображения вызывается снова и снова, что-то вроде этого

Событие OnLoad изображения вызывается снова и снова, что-то вроде этого

Если вы настроены на хаки, это тоже сработает.

<img src='blah' onerror = "this.src='url to image'">

как насчет этого?

var imgsBlocks = new Array( '/1.png', '/2.png', '/3.png');
function getImageUrl(elemid) {  
var ind = document.getElementById(elemid).selectedIndex;
document.getElementById("get_img").src=imgsBlocks[ind]; 
}

это не работает?

<img src = "'+imgsBlocks[2]+'" id = "get_img"/>

Это предполагает, что вы создаете HTML в своем JS-коде; В вопросе нет намека на то, что это так.

Adrian Heine 20.10.2012 23:24

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