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

« VBAで非同期割込処理。n秒後に自動的に閉じるMsgBox() | トップページ | スクリプトと言語を一緒に指定する。 »

2007年10月 2日 (火)

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

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

ブックマークレットのインターネットショートカットを実行するには、次のVBSファイルをインターネットショートカットに関連付けるか、SendToに入れて、インターネットショートカットを右クリックして実行します。

execUrlScript.VBS

CreateObject("Shell.Application").Windows().Item().Document.parentWindow.setTimeout CreateObject("WScript.Shell").CreateShortCut(WScript.Arguments(0)).TargetPath

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

execScript.VBS

Set ie=CreateObject("Shell.Application").Windows().Item()
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ページのセキュリティゾーンのセキュリティレベルに依存します。後者は依存しません。

※ IE6まで。

« VBAで非同期割込処理。n秒後に自動的に閉じるMsgBox() | トップページ | スクリプトと言語を一緒に指定する。 »