javascript - 更改图像时闪烁

标签 javascript php ajax

所以我的 HTML 正文中有

<a id="Hal9000">

我也有这个功能

function Hal(MSG){
document.getElementById("Hal9000").innerHTML = "<img src=\"+preloadImage("HAL9000.php?Text="+MSG)+"\"\>";
}
function preloadImage(url){
var img=new Image();
img.src=url;
return url;
}

因此 Hal(MSG) 会定期调用,以使用从 HAL9000.php 生成的新 Hal9000 来更新页面。每次调用该函数并更改页面时,整个屏幕都会闪烁。

在页面加载时预加载不太可行,并且尝试加载所有不同的 Hal9000 图片会很困难。

有没有办法可以从 HAL9000.php 中提取图像,然后预加载并替换?

最佳答案

因此,您可以预加载新图像并在加载后替换它:

function Hal(MSG){
    preloadImage("HAL9000.php?Text="+MSG)
}

function preloadImage(url){
    var img=new Image();
    img.src=url;
    img.onload = function(){
        document.getElementById("Hal9000").innerHTML = '<img src="'+url+'" \>';
    }
}

或者您可以将当前 src 设置为图像的 css 背景以防止闪烁。

function Hal(MSG){
    var container = document.getElementById("Hal9000")
    var img = container.getElementByTagName('img')[0]
    var src = 'HAL9000.php?Text='+MSG
    if(!img)
        container.innerHTML = '<img src="'+src+'" \>';
    else{
        img.style.backgroundImage = 'url('+img.src+')'
        img.style.backgroundSize = '100% 100%'
        img.src = src
    }
}

关于javascript - 更改图像时闪烁,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46129763/

相关文章:

javascript - 使用 JQuery 注册系统不起作用

php - 按钮上的 AJAX 功能第一次点击后不运行 PHP

javascript - JSON 无法将对象解码为字符串类型的 GO 值

javascript - 使用 extend 将对象添加到原型(prototype)

javascript - 获取一个大字符串中分隔符之间的所有子字符串

php - 在没有 WSDL 的情况下提供 SOAP 服务是不好的做法吗?

php - 为什么 mysqli_num_rows 总是返回 0?

php - 与 empty, isset, !empty, !isset 混淆

javascript - jQuery ajax 函数在 Safari 中不起作用(Firefox、Chrome、IE 可以)

javascript - 为什么使用 withMutations 会得到不同的结果?