2012-05-16 113 views
0

我使用下面的函数:为什么document.getElementById()。setAttribute在Chrome和IE中无法正常工作?

function pdfChanger(location){ document.getElementById("pdf").setAttribute("data",location); }

其在这里称为:

<a href="javascript:pdfChanger('documents/SecurityDocs/sample.pdf')">test1</a><br/> 

,并旨在改变这个对象中显示的PDF文件:

<object id="pdf" data="documents/sample2.pdf#toolbar=0&navpanes=0&scrollbar=0&page=1&view=FitHtop" 
        type="application/pdf"></object> 

在Firefox中点击唤醒此功能的链接可正确更改PDF对象。但是,在Chrome中,点击链接后必须单击PDF,才能正确显示已更改的PDF。在IE中,pdf完全没有改变。为什么会发生这种情况,我可以做些什么来使此功能在所有浏览器中均匀工作?

+0

更改属性有什么区别吗?说“数据路径”或沿着这些线路。 https://developer.mozilla.org/en/DOM/element.setAttribute提到了一些保留字,虽然他们只提到“价值”,但可能很好。 – sottenad

回答

0

设置属性值并不保证重新呈现html元素。

如果我们改变img标签的宽度或高度,我们总会看到图像被重新渲染。

如果我们改变一个img标签的id,浏览器是否需要重新渲染图片呢?我不这么认为,但有些浏览器可能。

从呈现的角度来看,对象标记的'data'属性可以从浏览器到浏览器的想法各不相同。它被视为'数据'或'源URL'。

为了保证元素的渲染,最好重写整个元素。您可以创建/添加元素或使用innerHTML。例如,

document.getElementById('object_div').innerHTML='<object id="pdf" ...></object>' 
相关问题