マンガでよめる痔のこと・薬のこと

ajaxによる画面項目切り替えを行っていますが、
その場合、window.onloadイベントが発生しないようです。

ユーザからの命令でwindow.onloadイベントを発生させることは不可能でしょうか?

このQ&Aに関連する最新のQ&A

A 回答 (2件)

できることは出来るが,ライブラリ側のソースを読んでバグあるいは仕様を把握してからにしてくれ。


====================================================
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dt …
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Q5209553 TestCase 2</title>
<style type="text/css">
p{
background-color:red;
}
</style>
<script type="text/javascript">
//<![CDATA[
var i = 0;
function test1(){
alert(i);
i = i + 1;

}
function test2(){
/* http://www.w3.org/TR/DOM-Level-2-Events/events.h … */
/* http://www.w3.org/TR/DOM-Level-2-Events/events.h … */
/* http://www.w3.org/TR/DOM-Level-2-Events/events.h … */
/* http://www.w3.org/TR/DOM-Level-2-Events/events.h … */
var e = document.createEvent("HTMLEvents");
e.initEvent("load",false,false);
window.dispatchEvent(e);
}

function test3(){
window.addEventListener('load',test1,false);
/* useCaptureはよく解らん。*/
/* Safariではbody要素のonload属性に記述しても発動しなかった。*/
/* 一応script要素内の関数外とかにかけばうまくいく事は確認しているが,俺はその手のコード嫌い */
/* IEは何か,fireEventメソッドだかがうまく実行できなかった。*/
}
//]]>
</script>
</head>
<body>
<p onclick="test3();" >あああ</p> <!-- こっちを1回クリック -->
<p onclick="test2();" >いいい</p> <!-- その後こっちをクリックするたびに表示される値が変化する -->
</body>
</html>
    • good
    • 0
この回答へのお礼

早速のご回答ありがとうございました。

こんな方法があること全く知りませんでした。
コメントにも書いて頂いたように、body.onloadが上手く発動しないようですね。
mouse.onclickは任意発動できることを確認しました。

もうしばらくがんばってみます。

お礼日時:2009/08/15 21:51

<script type="text/javascript">


window.onload=function(){
alert('onload');
}
</script>

<a onclick="window.onload();">オンロード</a>

IE8(IE7互換モード)、スクリプトレット(他のブラウザの言い方ではブックマークレット)で検証


window.addEventListener/window.attachEventを使ってセットしたものについては、
その関数を直接呼び出せば良いと思います。

<script type="text/javascript">
function test1(){
alert('hello');
}
window.addEventListener('load', test1, false);
</script>

<a onclick="test1();">オンロード</a>


FirefoxではXMLモードとHTMLモードで動作が違うかもしれません。(FirefoxのJavaScript全体に言えることですが)
    • good
    • 0
この回答へのお礼

お礼遅くなり申し訳ありませんでした。

たいへん勉強になりました。
参考にし、実装していきたいと思います。

お礼日時:2009/09/03 17:41

このQ&Aに関連する人気のQ&A

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

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

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

Qonchangeイベントを強制的に発生させる

お世話になります。
onchangeイベントをjavascriptで強制的に動作させたいと思っております。

発生させたい場合
・ユーザーがtextボックスを入力
・リンクボタンを押下した場合

簡単なことなのかもしれませんが、
ご教授よろしくお願いいたします。


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<script type="text/javascript">

function change(){
alert('test');
}

function update(){
document.getElementById('1').value = "update";
document.getElementById('1').onchange = change;
}


</script>

<input id="1" type="text" value="1" onchange="change();">

<a href="javascript:update();">update</a>

お世話になります。
onchangeイベントをjavascriptで強制的に動作させたいと思っております。

発生させたい場合
・ユーザーがtextボックスを入力
・リンクボタンを押下した場合

簡単なことなのかもしれませんが、
ご教授よろしくお願いいたします。


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<script type="text/javascript">

function change(){
alert('test');
}

function update(){
document.getElementById('1').value = "update";
document.getElementById('1').onchan...続きを読む

Aベストアンサー

回答は出てますが・・・onchangeにこだわるなら、

document.getElementById('***').onchange();

()を付ければ呼び出せます。(Windows FireFox2、Opera8で確認)


var f = document.getElementById('***').onchange;
f();

IE6の場合はいったん変数に代入する必要があるようです。

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化したほうが、可読性が高くなると
思います。

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

Q登録済みイベントリスナーの情報を取得したい

子画面に別機能をロードするようなページを作成しており、その子画面がオンロードで登録したイベントリスナーをクローズの際に削除するような仕組みにしています。

この処理を行う際、登録済みのリスナー情報を取得できる方法があれば知りたいのですが、方法がわかりません。

(無ければ無いで、管理マネージャーのような仕組みを作成しようと思っています。)

よろしくお願いします。

Aベストアンサー

# No.1 は質問内容を誤読してました。

eventTarget.onclick = function() { .. } のようにレガシーな書き方をしている場合は No.1 のように String 変換すれば内容を取得&編集可能です。

addEventListener/attachEvent した場合はオーサからリスナー登録状況を見ることはできませんので、管理マネージャを自作して下さい。

# たとえば prototype.js では Event.observers にイベントリスナをキャッシュしています。

参考URL:http://prototype.conio.net/

QHTMLからフォルダを開きたい

いつも大変お世話になります<(_ _)>

Webサーバー上にあるWebページ(HTML)の中に、ローカルPCのフォルダを開くリンクを付けたいのですが、
<a href="file://c:\windows">OPEN</a>
としても、何も反応しません。

いろいろ調べたのですが、上記の方法しか見あたりません。

なお、ブラウザのアドレス欄に file://c:\windows と入力すると、フォルダの内容が表示されます。
※Firefoxだと、ファイルの一覧になりますが・・・

何か環境によって挙動が異なるのでしょうか?
それとも、セキュリティ上の観点から最近じゃ出来なくなっているのでしょうか?

是非ともお助け下さい。宜しくお願い致します。

Aベストアンサー

file:///C:/windows/
/は三つでは・・・
 IEの場合はエクスプローラ(ファイルマネージャ)が開くような・・・
 IEはファイルマネージャーと一体のブラウザなので・・・

★実は、ローカルサーバーが必要です。
 apacheでも何でも良いので、WEBデータの入っているフォルダーを
<VIRTUALHOST 127.0.0.1>
C:\Document and settings\my document\web
 とかに指定して、Windowsのhostsファイルで、適当なサーバー名を指定しておきます。
myLocalhost 127.0.0.1
とか・・・

 そうすると
http://myLoclahost/
 で開けます。

 

Qで配列(複数の要素)を渡したいとき?

こんにちわ,

今HTML+PHPで
$hoge[]にいくつかの要素が入っているとき,
それをあるfoo.phpというページに渡したいとき,
echo '<form action="foo.php" method="POST">';
echo '<input type="hidden" name="$hoge[]" >';
echo '</form>';
としたのですが,うまくいきません。

どうしたらよろしいでしょうか。

Aベストアンサー

nameじゃなく、valueでは?
あとやるなら、
for($i=0;$i<count($hoge);$i++){
print "<input type=\"hidden\" name=\"$hoge[$i][0]\" value=\"$hoge[$i][1]\">";
}
とか?

Qiterateで受け取った値を処理に使いたい

こんにちは、honiyonです。

 まだ知識が浅い為、おかしな言い回しがあるかも知れませんがご容赦くださいm(_ _)m

 Servlet側で作成したデータをJSP側で

<logic:iterate id="LOOP" name="LOOP_LIST" indexId="index">
<bean:write name="LOOP" property="data1"/>
<bean:write name="LOOP" property="data2"/>
</logic:iterate>

 のようにして表示する方法はわかりました。
 今度は、これを表示するのではなくて処理に使いたいのですが、その方法がわからず難儀しています。

 こんな書き方は出来ないのですが、こういう事がやりたいと思っています。


<logic:iterate id="LOOP" name="LOOP_LIST" indexId="index">

<!---こっちは普通に表示--->
<bean:write name="LOOP" property="data1"/>


<!---data2は処理に使う--->
<%
 ↓↓ここの書き方がわからない↓↓
String CODE= "<bean:write name="LOOP" property="data2"/>"

if (CODE == "1") { out.println("牛"); }
else { out.println("馬"); }
%>
</logic:iterate>


 よろしくお願いします(..

こんにちは、honiyonです。

 まだ知識が浅い為、おかしな言い回しがあるかも知れませんがご容赦くださいm(_ _)m

 Servlet側で作成したデータをJSP側で

<logic:iterate id="LOOP" name="LOOP_LIST" indexId="index">
<bean:write name="LOOP" property="data1"/>
<bean:write name="LOOP" property="data2"/>
</logic:iterate>

 のようにして表示する方法はわかりました。
 今度は、これを表示するのではなくて処理に使いたいのですが、その方法がわからず難儀しています。

 こんな書き方...続きを読む

Aベストアンサー

No.1の方のtypoを補いつつ、

<logic:equal name="LOOP" property="data2" value="1">

</logic:equal>
<logic:notEqual name="LOOP" property="data2" value="1">

</logic:notEqual>

ですね。これですむなら、この方法を採用すべきです。


「本当は牛馬ではなく、実はもっと複雑で」というのであれば、form-beanのpropertyを通じて表示データを取得できるように、あらかじめ仕込んでおく手法もあります。


「どうしてもスクリプトレットで」となると、logic:iterate の処理とは全く無関係に、自身でform-beanからデータを引っ張ってくることになるかと思います。背景を適当に想像で補って全体を記せば、例えば以下のようなコードです。
どこか倒錯した感がありますね。だから、この方法は使うべきではありません。

<%@ page import="myproject.ListForm" %>
<%@ page import="myproject.ItemForm" %>

<html:form action="/myproject/listAction">

<bean:define id="LOOP_LIST" name="listForm" property="list"/>
<logic:iterate id="LOOP" name="LOOP_LIST" indexId="index">
<bean:write name="LOOP" property="data1"/>
<%! int index = 0; %>
<%
ListForm list = (ListForm) request.getAttribute("listForm");
ItemForm item = (ItemForm) list.getList().get(index++);
String code = item.getData2();
out.println(code.eqauls("1") ? "牛": "馬");
%>
<hr/>
</logic:iterate>

※ String の同値Checkには、equals() を使います。

No.1の方のtypoを補いつつ、

<logic:equal name="LOOP" property="data2" value="1">

</logic:equal>
<logic:notEqual name="LOOP" property="data2" value="1">

</logic:notEqual>

ですね。これですむなら、この方法を採用すべきです。


「本当は牛馬ではなく、実はもっと複雑で」というのであれば、form-beanのpropertyを通じて表示データを取得できるように、あらかじめ仕込んでおく手法もあります。


「どうしてもスクリプトレットで」となると、logic:iterate の処理とは全く無関係...続きを読む


人気Q&Aランキング