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    
無料ブログはココログ

« htmlファイルにbaseタグを追加する。(その2) | トップページ | サポート記事を保存するとき、文書番号をファイル名に付ける。 »

2012年8月25日 (土)

セキュリティレベルに依存して実行できないBookmarkletを実行する。(その2)

※ 旧記事はIE6までなので、IE9用。

javascript:やvbscript:プロトコルは、表示中のWebページのセキュリティゾーンのセキュリティレベルに依存するため、一般に実行できません。

ブックマークレットのインターネットショートカットを実行するには、次のVBSファイルをお気に入りかお気に入りバーに入れて、インターネットショートカットをドロップします。

execBookmarklet.vbs

Set wShell=CreateObject("WScript.Shell")
wShell.SendKeys "^{f6}"
For Each ie In CreateObject("Shell.Application").Windows()
  If ie.ReadyState=4 Then If TypeName(ie.Document)="HTMLDocument" Then If ie.Document.hasFocus() Then Exit For
Next
If IsEmpty(ie) Then
  MsgBox "Current IE not found."
  WScript.Quit
End If
ie.Document.parentWindow.setTimeout CreateObject("WScript.Shell").CreateShortCut(WScript.Arguments(0)).TargetPath

また、アドレスバーにjavascript:やvbscript:プロトコルを直接入力する代わりに、次のVBSファイルをお気に入りかお気に入りバーに入れて、こちらのInputBoxに入力します。

execScript.vbs

Set wShell=CreateObject("WScript.Shell")
wShell.SendKeys "^{f6}"
For Each ie In CreateObject("Shell.Application").Windows()
  If ie.ReadyState=4 Then If TypeName(ie.Document)="HTMLDocument" Then If ie.Document.hasFocus() Then Exit For
Next
If IsEmpty(ie) Then
  MsgBox "Current IE not found."
  WScript.Quit
End If
Do
  script=InputBox("Enter script...",WScript.ScriptName,script,,0)
  If script="" Then Exit Do
  ie.Document.parentWindow.setTimeout script
Loop

ここで、window.execScript()でなく、window.setTimeout()を使用するところが味噌です。前者は表示中のWebページのセキュリティゾーンのセキュリティレベルに依存します。後者は依存しません。

« htmlファイルにbaseタグを追加する。(その2) | トップページ | サポート記事を保存するとき、文書番号をファイル名に付ける。 »