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)