2013-10-21 56 views
0

我已经浏览过类似的线程,并尝试了所有建议无效的东西。在页面加载后强制重绘/重新绘制firefox中的DOM元素

我想要的页面通过改变它的src属性一旦我有一个新的位置加载之后更换的图像。我想用本地图像替换图像。

直接通过img.src = urlString改变src属性;或使用setAttribute()方法设置src,但不重新绘制加载页面中的图像。我用window.alert(img.src);检查src属性是否真的发生了变化。

我用下面的代码片段从here强制重绘。

var n = document.createTextNode(' '); 
var disp = img.style.display; 
img.appendChild(n); 
img.style.display = 'none'; 

img.style.display = disp; 
n.parentNode.removeChild(n); 

似乎没有任何工作。是因为页面已加载还是因为我正在使用本地文件?

本地文件在%AppData%\ temp,这可能是一个权限问题吗?浏览器控制台不会引发任何错误。我不想刷新整个页面,因为有人可能在表单中输入内容,并且他们将丢失数据。

任何输入,将不胜感激。谢谢。

编辑:一点澄清。 我使用扩展在每个窗口中注入一个脚本。一旦一个窗口加载了一个页面,我将这些图像发送给另一个脚本进行处理,然后该脚本将一个事件返回到具有一个位置的窗口到一个新文件。一旦事件被捕获,就会调用一个函数来改变特定图像的src属性。我检查了所有内容,src被更改,但浏览器不显示新图像。

另一编辑: 似乎没有权限问题,因为我可以使用file:/// pathtofile/从地址栏访问该文件。使用外部网址(例如http://),即使在网页加载后,它也可以正常工作。我怎样才能使它与当地的网址合作?

+0

如果将不会中断您的文档流程,你可以删除旧的图像(通过删除它的DOM节点),并更换与新的一个。 – Zemljoradnik

+0

我无法确定。我不知道我得到了什么网页,所以我不知道会有什么样的损害。 –

回答

1

Firefox不会允许不受信任的网页从file://的URI以任何方式加载数据。这包括从file:// URI加载图像。

要知道为什么,考虑如果一个网页做<img src="file:///dev/tty">在Linux或Mac,例如会发生什么。在某些Windows版本存在类似的问题,如果你试图从file:///c:/con和喜欢读...

+0

谢谢你的回答。我会尝试使用Web服务器来更改图像。 –