为什么document.getElementById()。setAttribute在Chrome和IE中无法正常工作?

时间:2012-05-16 15:58:23

标签: javascript function pdf object setattribute

我正在使用以下功能:

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根本不会改变。为什么会发生这种情况,我该怎么做才能使这个功能在所有浏览器中统一运行?

1 个答案:

答案 0 :(得分:0)

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

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

如果我们更改img标签的id怎么样,浏览器是否需要重新渲染图像?我不这么认为,但有些浏览器可能。

&#39;数据&#39;从渲染的角度来看,对象标签的属性可以从浏览器到浏览器的思维方式不同。它被视为数据&#39;或者来源网址#39;

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

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