2010-01-17 45 views
0

我需要將一個完整的SVG文檔DOM插入到<object>元素中。所以這裏是我的代碼:設置<object>的contentDocument來自另一個DOM

var svgDom = (new DOMParser()).parseFromString(streamedFile,'image/svg+xml'); 
var pagePics = document.querySelectorAll('#currentFiles figure object'); 

for (var i=0; i<pagePics.length; i++){ 
    pagePics[i].contentDocument = svgDom.document; 
} 

但這不起作用。此代碼運行後,DOM檢查器不會顯示<object>的contentDocument屬性。

如果這使事情變得簡單,可以使用jQuery。我究竟做錯了什麼?

回答

1

contentDocument是一個只讀屬性。您不能將Document從一個上下文移動到另一個上下文。

通常您必須將importNode內容從一個文檔轉換爲另一個文檔。但是,如果您擁有不同的文檔類型(如SVG和HTML),那麼這種功能幾乎沒有用處。

對於從字符串字符串加載SVG到iframe或對象,我認爲你別無選擇,只能創建一個data: URL的元素,例如。 <object data="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E...">

+0

謝謝!是否有可能創建一個新的'對象'元素與我的DOM,並取代舊的? 如果不可能,那麼序列化DOM,url_escape,然後使用轉義字符串不會有太大的負擔嗎? – 2010-01-17 15:43:32

+0

是的,應該可以動態創建一個'object'。當然,IE6-7上既沒有'data:'URL也沒有'querySelectorAll',但是如果我們在談論SVG,我想我們不是在談論IE ... – bobince 2010-01-17 16:01:52

+0

但是我們可以將DOM分配給動態創建'object'?我猜不是,因爲如果它是隻讀屬性,它應該不會影響DOM中的對象是否已經存在。 但是,表演呢?或者因爲我沒有選擇不需要打擾嗎? 我正在製作Opera svg查看器小部件,所以IE不是問題。這就像編碼天堂,我應該說:)! – 2010-01-17 16:23:42

相關問題