页面加载后强制在firefox中重绘/重绘DOM元素

时间:2013-10-21 09:49:31

标签: javascript 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:// ),即使在网页加载后,它似乎也能正常工作。如何使其与本地网址一起使用?

1 个答案:

答案 0 :(得分:1)

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

要了解原因,请考虑如果页面在Linux或Mac上执行<img src="file:///dev/tty">会发生什么。如果您尝试阅读file:///c:/con之类的某些Windows版本,则存在类似问题...