2017年11月
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30    
無料ブログはココログ

« 「Web ページ、HTML のみ (*.htm;*.html)」で「名前を付けて保存」する。 | トップページ | 「Web アーカイブ、単一のファイル (*.mht)」で「名前を付けて保存」する。 »

2008年6月 5日 (木)

「Web ページ、完全 (*.htm;*.html)」で「名前を付けて保存」する。

IE7で「名前を付けて保存」のデフォルトが「Web ページ、完全 (*.htm;*.html)」から「Web アーカイブ、単一のファイル (*.mht)」に変わりました。

そのため、IE7で「Web ページ、完全 (*.htm;*.html)」で保存しようとしても、デフォルトが「Web アーカイブ、単一のファイル (*.mht)」なので、これをいちいち変更しなければなりません。面倒臭。

IE7でShell.Windows().Item()が使えなくなったので、コンテキストメニュー拡張に変更します。

SaveAsFILES.htm

<html>
<head>
<object id=ShellWindows classid=clsid:9BA05972-F6A8-11CF-A442-00A0C90A8F39></object>
<object id=fso classid=clsid:0D43FE01-F093-11CF-8940-00A0C9054228></object>
<script language=jscript defer></script>
<script language=vbscript defer>
For Each ie In ShellWindows
  If TypeName(ie.Document)="HTMLDocument" Then
    If ie.Document.parentWindow Is external.menuArguments.top Then Exit For
  End If
Next
title=ie.Document.title
If title="" Then
  a1.href=ie.LocationURL
  title=fso.GetFileName(decodeURI(a1.pathname))
End If
Select Case LCase(fso.GetExtensionName(title))
Case "htm","html"
Case Else
  title2=ie.Document.title
  ie.Document.title=title & ".htm"
End Select
ie.ExecWB 4,1
If Not IsEmpty(title2) Then ie.Document.title=title2
</script>
</head>
<body>
<a id=a1 ></a>
</body>
</html>

SaveAsFILES.reg

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\MenuExt\Web ページ、完全(&K)]
@="C:\\どこか\\SaveAsFILES.htm"

document.execCommand("SaveAs") は、旧ダイアログ「HTML ドキュメントの保存」です。
これには、「Web アーカイブ、単一のファイル (*.mht)」や「Web ページ、完全 (*.htm;*.html)」がありません。
ie.ExecWB(OLECMDID_SAVEAS)でも、ファイル名を指定すると、旧ダイアログになります。
なので、ファイル名を指定しないで、ie.ExecWB(OLECMDID_SAVEAS)を使います。
すると、新ダイアログ「Web ページの保存」になります。
新ダイアログは、タイトルからファイル名を生成します。
ここで、もし、タイトルの末尾が.mhtや.htmだと、生成されるファイル名もそうなって、それに応じて「ファイルの種類(T)」が「Web アーカイブ、単一のファイル (*.mht)」や「Web ページ、完全 (*.htm;*.html)」になります。
これを利用します。
ie.ExecWB(OLECMDID_SAVEAS)を使うために、ShellWindowsコレクションの中から自分のIEオブジェクトを探します。

※ Vista IEの「保護モード:有効」のページでは使えません。

« 「Web ページ、HTML のみ (*.htm;*.html)」で「名前を付けて保存」する。 | トップページ | 「Web アーカイブ、単一のファイル (*.mht)」で「名前を付けて保存」する。 »