javascript - 延迟背景图像并阻止其被缓存

标签 javascript image wordpress caching delay

我设置了一个背景图像,以显示在广告位的位置/后面,以防广告拦截。但是,我需要将其延迟到广告展示之后。

我使用以下代码,但是图像延迟的时间不够长。

<script type="text/javascript" language="JavaScript">
var resources = {div1:"url('/images/image1.png')",div2:"url('/images/image2.jpg')"};
function loadImageBG(id) {
  document.getElementById(id).style.backgroundImage = resources[id];
}
</script>


另外,如何阻止图像被缓存?

这是一个 WP 站点,我使用的是 WP Super Cache;我发现插件中没有任何功能可以执行此操作,尽管如此,我不确定这是否足以用于浏览器缓存。

最佳答案

一个简单、可靠的方法是使用计时器。考虑到广告加载时间的变化无常——以及是否加载——它不会是完美的。但这比尝试确定广告何时加载或是否加载要简单得多。

尝试如下:

function loadImageBG (id) {
    setTimeout ( function () {
        document.getElementById (id).style.backgroundImage = resources[id];
    }, 888);
}


我建议不要尝试停止缓存;您不想让您的用户太烦恼。 ;)

但是,一种方法是将唯一参数附加到资源 URL:

function loadImageBG (id) {
    setTimeout ( function () {
        var d           = new Date();
        var milliSecs   = d.getTime();
        var noCacheURL  = resources[id].replace (/'\)/, "?nc=" + milliSecs + "')");

        document.getElementById (id).style.backgroundImage = noCacheURL;
    }, 888);
}
<小时/>

注释:

  1. 888 是以毫秒为单位的计时器延迟。出于可用性原因,我建议不要将其设置为大于 1000——即 1 秒。

  2. 没有 noCacheURL 延迟值。由于 noCacheURL 的值是由毫秒时钟设置的,因此每次页面加载时它的值始终会有所不同。

    因此,用户的浏览器将始终绕过用户的缓存来请求新的副本。

    如果您使用动态生成的图像(似乎值得怀疑)并在服务器端缓存,那么它的超时是一个不同的问题,您需要单独询问。

关于javascript - 延迟背景图像并阻止其被缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8100147/

相关文章:

javascript - 通过ajax获取输入字段的值然后传递给php

javascript - 从 Nodejs 获取数据到 html

javascript - 全高对 Overlay 不起作用

python - 多线程时 cv2 图像显示不起作用

swift - 正确地为纵横比适合的图像加上字幕

jquery - WordPress 将 wp_nav_menu 自定义为 Bootstrap 可折叠树菜单

php - 需要执行composer和npm的WordPress插件的集成测试

javascript - 按首字母 JavaScript 分组的问题

image - 如何从扫描的pdf中提取图像

php - 如何动态分配作者在 WordPress 中发帖?