2017年9月
          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
無料ブログはココログ

« IE7/IE8で、window.open()で作った子ウィンドウを.focus()でアクティブにする。(その2) | トップページ | IE7/IE8で、window.open()で作った子ウィンドウを.focus()でアクティブにする。(その3) »

2009年8月18日 (火)

IE7/IE8で、window.open()で作った子ウィンドウから親ウィンドウを.focus()でアクティブにする。(その2)

もし、複数タブのケースを除外するなら、比較的簡単です。WScript.ShellのAppActivateを使用します。

child app.htm

<html>
<head>
<script language=vbscript>
Sub Activate
opener.focus
opener.document.focus
If opener.document.hasFocus() Then Exit Sub
Dim wShell
Set wShell=CreateObject("WScript.Shell")
If wShell.AppActivate(opener.document.title) Then Exit Sub
Dim LocationURL
LocationURL=opener.location.href
If Left(LocationURL,8)="file:///" Then LocationURL=Replace(UnEscape(Mid(LocationURL,9)),"/","\")
If LocationURL="about:blank" Then LocationURL="空白のページ"
If wShell.AppActivate(LocationURL) Then Exit Sub
End Sub
</script>
</head>
<body>
<button onclick="opener.focus">opener.focus</button>
<button onclick="opener.document.focus">opener.document.focus</button>
<button onclick='CreateObject("WScript.Shell").AppActivate opener.document.title'>AppActivate</button>
<button onclick="Activate">Activate</button>
</body>
</html>

親ウィンドウのタイトルはユニークにしておきます。
ただし、タイトルがタイトルバーに出ないで、URLのままのときがあります。

親ウィンドウが複数タブであっても、それがアクティブタブなら効きます。

« IE7/IE8で、window.open()で作った子ウィンドウを.focus()でアクティブにする。(その2) | トップページ | IE7/IE8で、window.open()で作った子ウィンドウを.focus()でアクティブにする。(その3) »