2012-05-16 114 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>' 
相關問題