Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/450.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 延迟背景图像并停止其缓存_Javascript_Image_Wordpress_Caching_Delay - Fatal编程技术网

Javascript 延迟背景图像并停止其缓存

Javascript 延迟背景图像并停止其缓存,javascript,image,wordpress,caching,delay,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) { docume

我设置了一个背景图像,以显示在广告槽的位置/后面,以防广告阻塞。但是,我需要推迟到广告播出之后

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

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

var resources={div1:“url('/images/image1.png')”,div2:“url('/images/image2.jpg')”;
函数loadImageBG(id){
document.getElementById(id).style.backgroundImage=resources[id];
}

另外,如何停止缓存图像


这是一个WP站点,我正在使用WP超级缓存;我看不到插件中有任何功能可以做到这一点,尽管如此,我不确定这是否足以满足浏览器缓存的需要。

一个简单、健壮的方法是使用计时器。考虑到未知广告加载时间的变幻莫测——以及它是否加载——它将不会是完美的。但这比试图确定广告何时或是否加载要简单得多

尝试以下方法:

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);
}

注:

  • 888
    是以毫秒为单位的计时器延迟。出于可用性的原因,我建议不要使其大于
    1000
    ——也就是1秒

  • 没有
    noCacheURL
    延迟值。因为
    noCacheURL
    s的值是由毫秒时钟设置的,所以它的值在每次页面加载时总是不同的

    因此,用户的浏览器总是会绕过用户的缓存请求新副本

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


  • 非常感谢。我会试着回答的。请原谅我的无知;“888”是延迟时间值吗?。另外,如何/在何处设置noCacheURL延迟值?