IMG SRC теги и JavaScript

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

Вот так:

<IMG SRC="GetImage()" />

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

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

Ответ 1

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

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

Ваша любимая структура JavaScript обеспечит более приятные способы:)

Ответ 2

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

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

Ответ 3

Можно ли вызвать функцию JavaScript из тега IMG SRC, чтобы получить 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 или что-то подобное.

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

Ответ 4

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

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

Ответ 5

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

Ех;

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

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

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

Ответ 6

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

Ответ 7

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

Ответ 8

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

Ответ 9

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

Ответ 10

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

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"/>

Ответ 11

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

Ответ 12

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

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

Ответ 13

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