分かったコトと疑問点。 グリモンなんてすごく使われてるし、ググれば情報が一杯あると 思ったんだけど、ググり方が悪かったのか見つかんなかった。 見つかったら恥ずかしいからこんなページ消すこと。 私が試したのは<frameset> <frame src="A" name="a"> <frameset name="main"> <frame src="B" name="b"> <frame src="C" name="c"> </frameset> </frameset>
という感じの作りのページ。このページ自体をXとする。 名付ける必要は結果的に無かったけれど。 Xの中には、A,B,CというXとは別なwebページを表示させてるけど 全て同じドメインである。 そのドメイン下のページ全てで、実行させるようなグリモンを書いた。 後で問題になったので、A,B,Cそれぞれにおいてもグリモンが発動してる のか気になったので、console.log(document);
というコードをグリモンに追加した。 その結果、AとBのみで実行した。何でCで実行されないのかな。分かんない。 元の目的としては、今はAの中で<form>を弄りたかったのと、 JavaScriptをちょっと弄りたかった。document.urlをチェックするなり して、Aの中でのみ発動させる。 Aで定義されているグローバルな変数、関数にはアクセスできなかった。 "hogehoge is undefined"というエラーが吐かれた。 んで偶然見つけたのが、今まで裸で書いてたコードをsetTimeoutで実行 させること。setTimeout("code string",time)
で実行される "code string"のwindowは裸でcode string
と書いた場合と 違うらしいのだ。そこらへんもちゃんと勉強しておくべきだった! --- 逆に今まではグリモンはXにおいてのみに発動されてるものだとばっかり 思ってて、name="a"のAで発動させたかったのでwindow.a.document.Form.xxx
ってやってた。だから、こうsetTimeout("document.Form.xxx",500)
500ってのは適当。 グリモンで自分ごのみに修正するの楽しい。
コメ(0) | トラ(0)