我正在通過html作爲字符串。我的目標是從具有所有適當節點的html中創建一個新文檔,以便我可以在我創建的文檔上執行諸如調用doc.getElementsByTagName之類的操作,並使其按預期工作。我的代碼的一個例子就是在這裏。使用document.implementation.createDocument創建一個新的HTML文檔
var doc = window.document.implementation.createDocument
('http://www.w3.org/1999/xhtml', 'html', null);
doc.getElementsByTagName('html')[0].innerHTML =
'<head><script>somejs</script>' +
'<script>var x = 5; var y = 2; var foo = x + y;</script>' +
'</head><body></body>';
var scripts = doc.getElementsByTagName('script');
console.log(scripts[0] + " code = " + scripts[0].innerHTML);
我有以下問題:
- 如果一個腳本標籤中的內容,包含上述「無功富= X + Y」;在例如像<一個字符(例如陳述變化我得到一個INVALID_STATE_ERR:DOM異常11.
- 即使腳本標記內沒有使用這樣的字符,當我運行上面的時候,我得到輸出「[object Element] code = undefined」
所以我的問題是:
A.如何處理字符,如<,給DOM異常11,當我嘗試使用他們不管我是誰設置innerHTML來 B.如何使文檔正確解析腳本標記並將其代碼放入其innerHTML屬性中,以便稍後可以閱讀它。
編輯:正如Ryan P指出,這段代碼實際上在FF中工作。因此,如果任何人都可以幫助我在鉻合金工作,將不勝感激!
感謝您的回覆! tempDoc vs doc是我把代碼放入堆棧溢出的錯誤。我原本有兩個功能。 Interstingly,閱讀你的迴應後,我嘗試在FF中運行我的代碼,它的工作原理,但它不適用於鉻。任何想法爲什麼這可能是?你能證實這種行爲嗎?還有一個標準的正則表達式用於將所有必要的字符轉換爲它們的HTML實體equivilents? – asutherland 2012-02-02 19:33:28
是的,我正在使用FF。檢入Chrome並且innerHTML無效,但textContent適用於Chrome和FF。不知道IE。 – 2012-02-02 19:42:15
非常感謝!標記爲答案。 – asutherland 2012-02-02 19:45:28