IMG SRC标签和JavaScript

时间:2020-03-06 14:33:34  来源:igfitidea点击:

是否可以从IMG SRC标签调用JavaScript函数以获取图像网址?

像这样:

<IMG SRC="GetImage()" />

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

这是使用.NET 2.0。

解决方案

否。Img的SRC属性不是事件,因此内联JS将永远不会触发。

我们不能在图像@src中内嵌它,但是我们应该能够在图像后立即从内嵌脚本块中调用它:

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

没有。这是不可能的,至少不是在所有浏览器中都如此。我们可以改为执行以下操作:

<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?

我们可以通过在SRC中调用aspx页面来动态提供图片。

前任;

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

仅当我们将实际图像设置为src属性,而不设置该属性或者将其设置为空字符串或者类似内容时,才会触发onload事件。将其设置为单个像素的透明gif或者类似的东西。

无论如何,这种技巧是可行的,但是根据我们真正要完成的工作,这可能不是最佳解决方案。我不知道我们为什么要这样做,但也许我们有充分的理由(想与我们分享!)。

之前,我必须做过类似的事情,而IIRC的诀窍在于,我们无法更改DOM树中一部分图像的src属性。因此,最好的选择是编写没有图像的HTML框架,然后1)创建一个onLoad函数,该函数使用document.createElement生成一个新的img元素; 2)使用setAttribute()设置src属性; 3)将其添加到DOM树。

图像的OnLoad事件一次又一次地执行这样的操作

图像的OnLoad事件一次又一次地执行这样的操作

如果我们想使用骇客技术,也可以使用。

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