見守り電球またはGPS端末が特価中!

ウインドのタイトルバー右上にある「×」が押されてウインドウが閉じられる
場合というのは取得できるでしょうか?
closeやanLoad等使用して自分なりにもやってみましたが、
どうしてもうまく行きません。

分かる方、参考になるHP等知っている方よろしくお願いします。

A 回答 (2件)

ちょっと試してみたのですが、


submitを使用しますと、その後にunloadが実行されてしまうようです。
右上の閉じるボタン(以下、[x])を押した場合にもunloadが実行されてしまうようなので、
onUnloadの指定だけですと、だめです。
そこで、かなり強引な方法を思いついたので、一応書いておきます。

----------------------------------------------------------------------
<html>
<head>
<title>submit</title>
<script language="JavaScript">
<!--
function check(){
  if(event.clientX<0) //clientXはクライアント領域(ウィンドウ)上のX座標
  alert('またきてね');
}
//-->
</script>
</head>
<body onUnload="check()">
<form action="http://www.yahoo.co.jp/">
<input type="submit">
</form>
</body>
----------------------------------------------------------------------

こんな感じでclientXを使用しますと、
[x]を押したときにはクライアント領域を抜けてでしまっているので、
clientXの値はマイナス値を取ります。
それを利用して、[x]を押した場合とsubmitを押した場合で、
場合わけをしてみました…。
上の例ですと、[x]を押した場合だけ、「またきてね」が表示されます。
参考になるかわかりませんが^^;

IE6で動作確認。
    • good
    • 0
この回答へのお礼

お返事遅れてすいませんでした。
kentayosさん何度もありがとうございます。
とても参考になりました^^
色々とお手数をおかけしてすいませんです。

本当にどうもありがとうございました。

お礼日時:2002/03/04 12:00

どうも^^kentayosです。


ページが閉じられるイベントを取得するには、
「onUnload」を使えばできます。

---------------------------------------------------------------------
<body onUnload="alert('またきてね');">
---------------------------------------------------------------------

ただし、この例だと、ページが閉じられたあとに
虚しくアラート出てしまうので、

---------------------------------------------------------------------
<body onUnload="alert('またきてね'); window.open('test.html','_blank','')">
---------------------------------------------------------------------

こんな感じにするとウィンドウを閉じつつ、
新しいウィンドウを開かせることができます。
「広告を閉じると新しいウィンドウが開く」というあれですね…
    • good
    • 1
この回答へのお礼

さっそくのお返事ありがとうございました。
しかし、この方法だとsubmitした場合にも処理してしまいますよね?
理由があり一枚の画面にsubmitさせているためこの方法ではちょっと・・・

お礼日時:2002/02/28 18:40

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QHTAのウィンドウを閉じるには・・。

HTAファイルから別のHTAファイルにリンクさせる時に同一ウィンドウで表示させることは可能でしょうか。ホームページビルダーでリンクの設定は同一ウインドウで開くようにしているのですが、元のHTAファイルはそのままになってしまいます。元のHTAファイルを閉じ新しいHTAファイルが開くような設定はどのようにやればいいのでしょうか。よろしくお願いします。(ローカルの環境です。)

Aベストアンサー

HTAはアプリケーション扱いになってしまうので、別ウィンドウになってしまうのだと思います。
新しいHTAファイルを開いた後、単純に自HTAファイルを閉じるだけでよいと思います。
例えば、こんな感じ

<script>
function next(){
var sh = new ActiveXObject("WScript.Shell");

sh.Run("hta2.hta",1);
window.close();
}
</script>
</head>
<body>
<span onclick="next()"><u>リンク</u></span>
</body>
</html>
--------------------------------------------
リンクで、アプリケーションを実行しようとすると、
セキュリティ上のダイアログがでるので、
スクリプトから起動しています。

Qブラウザの右上にあるボタンを消すには?

IEを使用しています。
ブラウザの右上にある、閉じる、最大、最小ボタンを消したいのですが、どうすれば良いでしょうか?
ご存じの方は、どうぞ教えていただけませんでしょうか。

Aベストアンサー

なるほど、特定の用途に限定した方策を模索中なのですね。

これは、通常のWebSiteでは、禁じ手とも言える、ユーザからの大顰蹙を買う手法ですが、JavaScriptでフルスクリーン表示させることで実装可能ですね。

表示はWin環境のIE4以上限定でのフルスクリーン表示となります。
それ以外の環境では正しく表示されません。

注意点としては、ウインドウのクローズアクションをボタンなどでナビゲーションしなければ、Altキー+F4キー以外ではウインドウをクローズ出来なくなります。
そのため、使いようによっては、ユーザビリティーを無視した劣悪サイトとも成りかねませんので、一般的なサイト構築には100%お勧め致しません。

まずは、以下の2枚のソースをエディタにCopy&Pasteして、動作チェックしてみて下さい。
その後、ご自分でアレンジして下さい。


リンク元、a.htmlの記述例・・

<html>
<head>
<title>a</title>
<script type="text/javascript">
<!--
function full_screen()
{
window.open("b.html","", "fullscreen=yes");
}
//-->
</script>
</head>
<body>
<a href="#" onclick="full_screen()">b.htmlをフルスクリーン表示</a>
</body>
</html>


リンク先、b.htmlの記述例・・

<html>
<head>
<title>b</title>
</head>
<body>
<form>
<input type="button" name="close" value="ウインドウを閉じる" onClick="window.close()">
</form>
</body>
</html>

なるほど、特定の用途に限定した方策を模索中なのですね。

これは、通常のWebSiteでは、禁じ手とも言える、ユーザからの大顰蹙を買う手法ですが、JavaScriptでフルスクリーン表示させることで実装可能ですね。

表示はWin環境のIE4以上限定でのフルスクリーン表示となります。
それ以外の環境では正しく表示されません。

注意点としては、ウインドウのクローズアクションをボタンなどでナビゲーションしなければ、Altキー+F4キー以外ではウインドウをクローズ出来なくなります。
そのため、使いように...続きを読む

QHTAで、こんなボタンが作りたい。

HTA(HTML Applications)で簡単な操作パネル的なものを作ろうと思っています。

イメージしているものは、
・『開始』ボタンを押下で外部ファイルa.vbsを実行し、ボタン上部のス   ペースに『稼動中』と表示。
・『停止』ボタンを押下で外部ファイルb.vbsを実行し、ボタン上部のス   ペースに『非稼動中』と表示。
・ボタンは1つで、始めは『開始』ボタンのみ。
 『開始』を押下すると『停止』に変わる。

という感じです。
 ボタン2つで片方をdisableでグレーアウトさせる、でも良いかと思っています。
 アドバイス等有りましたらお願い致します。贅沢を言わさせていただくと、具体的なコードと簡単で構わないので解説して頂けたら幸いです。


OS:Windows98

Aベストアンサー

私も勉強がてら作ってみました。Windows XP SP2で確認しました。
-----
<HTML>
<HTA:APPLICATION ID="oHTA" APPLICATIONNAME="easyPanel" SCROLL="no"
INNERBORDER="no" MAXIMIZEBUTTON="no" MINIMIZEBUTTON="no" SINGLEINSTANCE="yes" />
<HEAD>
<TITLE>easyPanel</TITLE>
<STYLE>
<!--
BODY
{
background-color: buttonface;
}
-->
</STYLE>
<SCRIPT>
var Wsh = new ActiveXObject("WScript.Shell");
// ボタンが押された
function buttonRun(){
if (window.form1.button1.value == "開始"){
form1.button1.value = "停止";
document.getElementById("label1").innerHTML = "稼動中";
Wsh.Popup ("a.vbs");
//Wsh.Run ("a.vbs");
}
else{
form1.button1.value = "開始";
document.getElementById("label1").innerHTML = "非稼動中";
Wsh.Popup ("b.vbs");
//Wsh.Run("b.vbs");
}
}
// フォームがロードされた
function Window_onLoad(){
window.resizeTo(150,120); // 好みで変更して下さい
window.moveTo(0,0);
}
</SCRIPT>
</HEAD>
<BODY onLoad="Window_onLoad()">
<SPAN id="label1" >非稼動中</SPAN>
<FORM name="form1">
<INPUT type="button" name="button1" value="開始" onClick="buttonRun()">
</FORM>
</BODY></HTML>
-----

私も勉強がてら作ってみました。Windows XP SP2で確認しました。
-----
<HTML>
<HTA:APPLICATION ID="oHTA" APPLICATIONNAME="easyPanel" SCROLL="no"
INNERBORDER="no" MAXIMIZEBUTTON="no" MINIMIZEBUTTON="no" SINGLEINSTANCE="yes" />
<HEAD>
<TITLE>easyPanel</TITLE>
<STYLE>
<!--
BODY
{
background-color: buttonface;
}
-->
</STYLE>
<SCRIPT>
var Wsh = new ActiveXObject("WScript.Shell");
// ボタンが押された
function buttonRun(){
if (window.form1.button1.value == "開...続きを読む

QVbscriptで自分自身のウィンドウを最大化するには?

IE5.0以上を使用と仮定。
新しいページを開く時に、そのページを
最大化して表示するにはパラメータを
渡してやればいいだけなので簡単だと思うのですが、

あるページがロードした時に
そのページにVbscriptを書いておくことで
自分自身を最大化することはできますでしょうか?

<body onload="~~~~">のようなイメージです。

Aベストアンサー

リサイズすることで、最大化(画面サイズ)にするスタンダードなやり方
<script language="VBScript">
sub window_onload()
window.resizeTo screen.availWidth, screen.availHeight
end sub
</script>
リサイズじゃなくて、本当に最大化する(ActiveXを使う)やり方
<script language="VBScript">
<!--
sub window_onload()
Dim objWsh
Set objWsh = CreateObject("WScript.Shell")
objWsh.SendKeys("% X") 'ALT+[space] (and) X
end sub
'-->
</script>
どちらも、<body onload="~">の記述は必要ないです。

QonClickに複数の関数を挿入する方法

初心者なのですがアニメーションの関数anime1、anime2、anime3を作成し、onClickに下記のように設定しました。
クリックするとアニメーション2つの設定ではは動くのですが、3つ目を設定すると動かなくなります。
通常はこのような設定はしないものなのでしょうか?
教えてください。
よろしくお願いします。
<INPUT type="button" value="START" onClick="anime1(), anime2()">・・・OKです。
<INPUT type="button" value="START" onClick="anime1(), anime2(),anime3()">・・・動きません。

Aベストアンサー

セミコロンでつなぐのが常道ですが、3つ以上なら
別途function化したほうが、可読性が高くなると
思います。

QWSH.Run の処理内容をテキストに落とすには

WSHを利用して、アプリケーションを実行しています。その際の、処理内容(結果)をテキストに落としたいのですが、うまくいきません。どなたか、アドバイスを宜しくお願いします。

Aベストアンサー

単純に実行の仕方がまずいだけかと。

CScript スクリプト名 //Nologo >c:\list.txt

vbsやjsのファイルを直接起動してるのにWScriptが規定のスクリプトエンジンになってませんか?

そんなことをしたくないのであれば、RunメソッドではなくExecメソッドを使い、StdOutを自分でテキストファイルに出力してください。
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/script56/html/wslrfexecmethod.asp

参考URL:http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/script56/html/wslrfexecmethod.asp

QJavaScriptにおいてコンピュータ名を取得するには??

どうしたらよいでしょうか??

よろしくおねがいします!!!!

Aベストアンサー

すいません、期待させてしまって。
コンピュータ名をWindowsアカウントと勘違いしておりました。

言語は何を使用されているか分かりませんが、VBScriptでは
次のとおりです。
ご存知かとは思いますが、サーバー側で環境情報を取得するには、

Request.ServerVariables ( 変数名 )

を使用します。
LOGON_USER・・・ ログインした Windows アカウント

で取得します。

本題に関しては、分かり次第、また、回答させていただきます。

どのようなことをしたいのか?
また、サーバー側言語は何なのか?
クライアント側言語は何なのかをご教授して頂くと、代案等を考えることができると思います。

Qブラウザの×ボタン(閉じるボタン)押下時のイベントをひろいたい

javaScriptでブラウザの閉じるボタン(×ボタン)を押したときに、functionを走らせたいのですがうまくいきません。onunloadで以下の処理を行っています。


if(event.clientX <= -8980 && event.clientY <= -9000 || event.clientX >= 32700 && event.clientY >= 32700) {
 //ブラウザ閉じられたときの処理
}
閉じるボタンを押してなくても走ってしまったり、不安定なのですが、×ボタン押下時のイベントの拾い方をどなたかご教授ください。よろしくお願いします。

Aベストアンサー

すでにお気づきかも知れませんが、下記URLの掲示板にヒントが載ってました。
WSH利用者さんのソースが、なかなか良いみたいです。

-- 以下、引用 --
function window.onbeforeunload() {
  if(((event.clientX > document.body.clientWidth) && (event.clientY<0)) || event.altKey){
    閉じたときの処理();
  }
}
-- --

参考URL:http://forums.microsoft.com/MSDN-JA/ShowPost.aspx?PostID=559017&SiteID=7

QJavaScriptde途中で、「exit」するには?

function kensaku(){
s_data = document.kaiin_form.input_name.value;

if(!s_data){ alert("キーワードを入れて下さい!"); }

if(s_data != dumy){ ...... }
for(i=st_no;i<=n;i++){
......省略.................;
.......省略................}
}

----------------------------------
3行目で表示されたアラートをOKで閉じても、4行目以下が実行されてしまいます。
3行目でexitするにはどうすれば良いでしょうか?

Aベストアンサー

>関数(kensaku())からは抜けられませんでした。
そうですね、勘違いしていました、f(^^;
すみません。
if(!s_data){
alert("キーワードを入れて下さい!");
return;
}
ですね。

QアプリケーションをVBS(WSH?)で操作したい

現在は以下のように楽天のマーケットスピードを起動させて
マウスマクロソフトでログインしていますが
WSHが動いている最中に別のアプリケーションが自動起動するようなことがあると
ログインに失敗します。

ですのでマウスマクロソフトを使用するのではなくて
該当アプリケーションのウインドウがアクティブ状態でなくても
コマンドを実行させる方法をおしえていただきたいです。

マーケットスピードだけではなくIEやその他メーラー等も操作したいので
イベント(ログ?コマンド?)を監視するなどして
WSHのコマンドを見つけ出す方法などを教えていただきたいです。

よろしくお願いいたします。


●●●現在のVBSの内容●●●●
'マケスピを立ち上げる。
WSHShell.Run """D:\Program Files\MarketSpeed\MarketSpeed\MarketSpeed.exe"""
WScript.Sleep 5000 '5秒ウェイトを入れ起動を待つ。

'この後マウスマクロソフトの起動
'マウスマクロソフトでログイン動作
●●●●●ここまで●●●●●

現在は以下のように楽天のマーケットスピードを起動させて
マウスマクロソフトでログインしていますが
WSHが動いている最中に別のアプリケーションが自動起動するようなことがあると
ログインに失敗します。

ですのでマウスマクロソフトを使用するのではなくて
該当アプリケーションのウインドウがアクティブ状態でなくても
コマンドを実行させる方法をおしえていただきたいです。

マーケットスピードだけではなくIEやその他メーラー等も操作したいので
イベント(ログ?コマンド?)を監視するなどして...続きを読む

Aベストアンサー

ANo.1の補足へのアドバイスです。

質問後半の意図はわかりました。命令を調べて、それらをWSHで実行してやれば、アプリケーション毎に確実に操作できるとお考えですね? しかしそれはアプリケーションを操作する考え方として正しいですけれども、残念ながらWSHのWshShellの機能ではできません。

ご存知かもしれませんが、アプリケーションが操作されるとWindowsは操作されたアプリケーションに対して「メッセージ」を送ります。アプリケーションはメッセージを受け取って対応する処理を行います。例えばメモ帳でメニューが選択されるとWM_COMMANDというメッセージ(選択されたメニューの情報を含む)がメモ帳プログラムに送られ、メモ帳プログラムは情報を見て処理を行います。

アプリケーションにメッセージが送られる様子はメッセージキャプチャプログラムで観察できます。私が使っているのはBorland Delphiに付いてきたWinSightですが、MSでしたら開発ソフトに付いてくるspyでしょうか(?)。これを解析して同様にメッセージを送ってやればアプリケーションを操作できます。

しかしWshShellにはメッセージを送る手段はなく、たかだかキーストロークを送ることしかできません。更に言えばアプリケーションを指定してキーを送れる訳ではなく、AppActivateを使ったとしても、たまたまそのときアクティブなアプリケーションに送ることしかできません。

メッセージを送るプログラムを自作すれば確実に操作できますが、実用上は「静かな状態」で使うか、あるいはSendKeysの直前にAppActivateを実行するようにすればよいのではないでしょうか。

-----
話は変わり、アプリケーションによってはキーを送るのではなく、WSHのCreateObjectメソッドでオブジェクトを作成して操作できるものがあります。例えばMS OfficeはVBAと同様の操作をWSHから行えます。目的に合えばこちらの方法を使うと確実です。IEも可能でMSDNに下記の資料があります。

InternetExplorer Object
http://msdn.microsoft.com/library/default.asp?url=/workshop/browser/webbrowser/reference/objects/internetexplorer.asp

ANo.1の補足へのアドバイスです。

質問後半の意図はわかりました。命令を調べて、それらをWSHで実行してやれば、アプリケーション毎に確実に操作できるとお考えですね? しかしそれはアプリケーションを操作する考え方として正しいですけれども、残念ながらWSHのWshShellの機能ではできません。

ご存知かもしれませんが、アプリケーションが操作されるとWindowsは操作されたアプリケーションに対して「メッセージ」を送ります。アプリケーションはメッセージを受け取って対応する処理を行います。例えばメ...続きを読む


人気Q&Aランキング