IE: SaveAs with innerHTML

22nd January 2006 - 14:02

По следам.

Можно замутить что-то в духе

function saveDocument(){
  var w = window.open("text/html", "w", "width=1,height=1");
  w.document.open();
  w.document.write(document.getElementsByTagName("HTML")[0].outerHTML);
  w.document.execCommand("saveAs", true, ".html");
  w.document.close();
  w.close();
}

или даже

// Это меня уже в Оперу занесло
// (здесь тоже есть тонкости, но как вариант...)
window.location = "data:application/octet-stream,"
                           + escape(document.documentElement.outerHTML);

, повесить на кнопку и всякий раз напоминать пользователю о её существовании, прикручивать к onbeforeunload и т.д. Однако…

<META NAME="save" CONTENT="snapshot">
<STYLE>
   .sSnapshot {behavior:url(#default#savesnapshot);}
</STYLE>

MSDN: saveSnapshot Behavior.

ok, для «сохранности» всех элементов пишем в CSS правило * {behavior:url(#default#savesnapshot);} и… болт, т.к. при сохранении такой страницы IE исковеркает её на

<!-- после первого сохранения -->
<STYLE> {
	BEHAVIOR: url(#default#savesnapshot)
}
</STYLE>

<!-- после второго сохранения -->
<STYLE>UNKNOWN {
	BEHAVIOR: url(#default#savesnapshot)
}
</STYLE>

Так что придётся опять танцевать, если нет желания расставлять классы:

<meta name="save" content="snapshot">
<style>html * {behavior:url(#default#savesnapshot);}</style>
<script>
document.styleSheets[0].cssText = "html * {behavior:url(#default#savesnapshot);}";
</script>

О сколько нам открытий чудных… Мелкософта дух.

Categories: dHtml | comments: (0)

Комментарии временно отключены.