IE未显示在Javascript中完成的更新的IMG SRC更改

Sco*_*key 6 javascript css internet-explorer

问题:IE版本7和8未显示在JavaScript中完成的更新的IMG SRC更改

你可以看到我的意思,如果你去下面的URL,在左边的(3)我想要一个不同的衬垫,你选择其中一个样本; 让我们说你选择"Asahi Chartreuse".请注意,左侧预览没有任何反应.但是如果你继续选择另一个样本,你会看到左侧的预览显示Asahi Chartreuse.所以它落后了.这就是我认为这是一个"刷新"问题的原因.它适用于Chrome就好了.

在IE中:注意,如果单击其他控件,则会进行刷新.

您可以在此处查看代码:https://www.casemodo.com/test.asp

我到底做了什么:

我已经尝试添加标题来说"no-cache".

我试过添加"?" 和png文件名后的随机数.

我在更改src后尝试将focus()设置为图像.

我已经尝试过,在更改src之后,告诉style.display被隐藏然后可见.

我尝试在页面上创建一个隐藏(而不是隐藏)的文本输入框,然后在更改img src后将focus()设置为它.

我试过设置window.focus().

我已经尝试过(如你所见)在更改src后设置警报.

GUESS:现在的样子是JavaScript引擎在我设置src后暂停,直到您在屏幕上的其他位置手动单击(焦点).所以它甚至从未涉及我上面尝试过的所有脚本.

Dav*_*ght 8

将src属性设置为null,然后将其设置为新的url:

在jquery中:

var myImg = $('#myImg');
myImg.attr('src', null);
myImg.attr('src', newUrl);
Run Code Online (Sandbox Code Playgroud)

在直js:

var myImg = document.getElementById('myImg');
myImg.src = null;
myImg.src = newUrl
Run Code Online (Sandbox Code Playgroud)

这对我有用 - 这让我很生气!


小智 1

我见过类似的 IE 问题是通过看似奇怪的innerHTML 重新分配来解决的。假设“container”是引用img的parentNode的变量。尝试“container.innerHTML=container.innerHTML”。这会触发重新渲染,并可能使错误的图像栩栩如生。