我有,我想用我的WinJS「商店」應用程序,以顯示給用戶Instapaper的文章iframe中。這是一個非常重要的功能,用戶應該能夠閱讀下載和離線保存的文章。設置IFRAME的HTML編碼的innerHTML文本
沒有深入瞭解顯示本地緩存html文件比顯示任何任何HTML文檔更難的荒謬,我目前的問題是iframe和它如何處理html文本。
說我有一個字符串的HTML文件從一個文本文件中讀取,像這樣:
<html>
<head>
<title>Foobar!</title>
</head>
<body>
<h1>Foo</h1>
<div>Bar</div>
</body>
</html>
如果我設置一個<div>
元素的innerHTML屬性(通過WinJS.Utilities.setInnerHTMLUnsafe
方法),然後檢查的財產,我得到我期待輸出:
>document.getElementById("article-frame").innerHTML
"
<title>Foobar!</title>
<h1>Foo</h1>
<div>Bar</div>
"
現在,當我能做的只有用同樣的事情,這就是結果:
>document.getElementsByTagName("iframe")[0].innerHTML
"<html>
<head>
<title>Foobar!</title>
</head>
<body>
<h1>Foo</h1>
<div>Bar</div>
</body>
</html>"
顯然,iframe是HTML編碼的文本,而股利不是。 這是設計,如果是這樣 - 爲什麼地球上的行爲會如此不同?我不記得從iframe中看到過這種行爲,但是再一次,我已經使用了很多年了。我寧願不只是使用一個div,因爲我不能阻止CSS從出血到它(我可以阻止CSS經由但是附加元素的ID嵌入樣式出血相反的方向,不利於UX非常多) 。
我已經花費了大量的時間試圖讓iframe通過src
屬性加載存儲在用戶的appData中的文件,但沒有成功。這些持續的阻礙可能會讓人非常沮喪!
編輯: 我已經嘗試設置幀的contentDocument
屬性的innerHTML
性能與類似div
實驗結果,不同的是HTML不顯示或呈現。
有趣以及是檢查contentDocument
和iframe
兩者的innerHTML
屬性(注意對於後者的空的結果)的輸出:
> document.getElementsByTagName("iframe")[0].contentDocument.innerHTML
"<html>
<head>
<title>Foobar!</title>
</head>
<body>
<h1>Foo</h1>
<div>Bar</div>
</body>
</html>"
> document.getElementsByTagName("iframe")[0].innerHTML
""
refrences
http://technet.microsoft.com/en-us/subscriptions/hh781229.aspx
http://social.msdn.microsoft.com/Forums/en-US/windowsstore/thread/e13791b2-7fc3-40cb-a284-f927aaa3a9e3