Можно ли вызвать функцию JavaScript из тега IMG SRC, чтобы получить URL-адрес изображения?
Нравится:
<IMG SRC = "GetImage()" />
<script language = "javascript">
function GetImage() {return "imageName/imagePath.jpg"}
</script>
Это использует .NET 2.0.
Согласен - мне потребовалась минута, чтобы сообразить, к чему он клонит ...



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Нет. Атрибут SRC Img не является событием, поэтому встроенный JS никогда не сработает.
Однако он принимает URI и может запускать javascript: псевдо-URI. Это причина дыр XSS.
Вы не можете сделать это встроенным в изображение @src, но вы должны иметь возможность вызывать его из встроенного блока скрипта сразу после вашего изображения:
<img src = "" id = "myImage"/>
<script type = "text/javascript">
document.getElementById("myImage").src = GetImage();
</script>
Opera не поддерживает встроенные теги скриптов? Это для меня новость.
На самом деле это далеко от истины. Рекомендуется размещать теги сценария как можно глубже на странице, поскольку рендеринг DOM откладывается до завершения выполнения сценария. Вы действительно можете ускорить воспринимаемое время загрузки страницы, разместив теги скрипта в конце вашего тела.
Неа. Это невозможно, по крайней мере, не во всех браузерах. Вместо этого вы можете сделать что-то вроде этого:
<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-коде; В вопросе нет намека на то, что это так.
Вопрос на самом деле не описывает, чего вы пытаетесь достичь?