【问题标题】:how can js(jquery) run before image is loadedjs(jquery)如何在加载图像之前运行
【发布时间】:2014-10-20 06:38:24
【问题描述】:

当图像未在 html DOM 中加载时,我想更改图像 url。 (在浏览器加载图像之前)

js能做到吗?

演示代码:

...
<body>
   <img src="old src"> <!-- this **HTML** is loaded from a database and i want to change this src using javascript-->
</body>
....

我试过了

$(function(){$(img).attr('src','new src');}); //it is can work ,but the brower will load old image first. then the js will run.

因为 HTML 是从数据库加载的,我不知道如何在服务器代码(java)中操作 html 字符串。所以我想用js来改变图片src。

编辑:

例如:

old src = "old domain/test.jpg" 我想把它改成 "right domian2(CDN)/test_width_height.jpg"

旧的 src 不在服务器中,所以浏览器会先从服务器收到 404 错误。 当 src 更改为新的 src 时,浏览器会从新的 src 重新加载图像,然后显示正确的图像。

我不希望首先出现 borwer 404 错误,我只希望浏览器从正确的地址加载正确的图像。

【问题讨论】:

  • 在 HTML 中将 src 更改为 ""。
  • @Ravi 因为图像是从数据库加载的,我不知道如何在服务器代码(java)中操作 html 字符串。所以我想用js来改变图片src。
  • @martynas 这不是我想要的,我想在浏览器加载图像之前更改 src。
  • 在window或body上试试onload函数
  • @SimranjeetSingh 我也可以先得到404,然后js运行

标签: javascript jquery html image dom


【解决方案1】:

如果加载图片有问题,也可以在onError中设置另一张图片

<img src="old domain/test.jpg" alt="Not Available"
 onError="this.src='right domian2(CDN)/test_width_height.jpg';" />

【讨论】:

  • 谢谢,这个解决方案和我的演示一样。那将得到404 fisrt.and我无法在java代码中操作html src(服务器)
  • 这里存在运行无限循环的可能性。
【解决方案2】:

您可以使用图像 complete 属性来确定图像是否已加载。如果没有,可以根据需要修改img标签的src。

请看下面的网址,

http://www.w3schools.com/jsref/prop_img_complete.asp

希望对你有帮助

【讨论】:

    【解决方案3】:

    一开始不要在图片标签中添加任何url。在特定条件下添加它们,例如在页面加载时添加为

    // define the function that assign the image url
    function assignImageSrc(){ 
        $('#imageID').prop('src','add your url here');
    }
    

    称之为

    <form onload="assignImageSrc()" >
    //
    </form>
    

    希望对你有帮助...

    【讨论】:

    • 因为 borswer 会得到旧图像,assignImageSrc 函数没有运行,chrome 会先打印 404,然后会更改 iamge src。我只是不想得到 404.html 显示速度会因为有很多图像而变慢。
    • 据我所知,如果图像的 src 已定义,则不能限制从服务器加载。您必须在定义时删除 src 标记的值。 javascript函数调用后必须为空字符串才能加载..
    • 好吧,看来我无法使用 js 解决它。虽然结果是正确的,但它看起来并不正确。这可能会影响浏览器的操作。
    猜你喜欢
    • 1970-01-01
    • 2018-10-04
    • 2012-05-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-03
    相关资源
    最近更新 更多