W i S T E R I A

B O A R D
 
●新規 ●トレリス表示 ●一覧表示 ●ログ検索 ●ヘルプ ●ホームへ
●関連記事の一覧

46
別フレームの壁紙を右クリックで切り替える。 by 95akaw 2004/01/16 (Fri) 12:17
△up
res/edit
 
ハジメマシテ。

道東に住む者です。
実は、バーチャルタウンでframe2から壁紙を盗まれることがあります。それで、frame1にscriptを記述して、「frame2で右クリックしたら壁紙を切り替えたい」のです。切り替えるのは1種類でも2種類でもかまいません。この方法をとることによって「エンコード機能」を残せると考えるからなのですが‥‥ frame2には触ることができません。

1年生のため、ローカル・サーバーでやってもことごとく「エラー」になってしまって成功しません。お力添えをお願いします。
48
Re1:別フレームの壁紙を右クリックで切り替える。 by ごだっち@管理人 2004/01/16 (Fri) 13:06
△up
res/edit
admin
 
ども、管理人です。

ところで「バーチャルタウン」って何?
どこかのコンテンツプロバイダーが提供しているホームページスペースか何かでしょうか?
まずは、そこの情報を教えてくださいね。
そのスペースの制限事項や、そのスペースが提供している機能によっては、どういう解決方法が可能になるか変わってくるので。

それから、「frame2には触ることが出来ません」というのは、外部ドメインのページか何かということでしょうか?
もし、そうだとしたら、スクリプトでは他ドメインのページ制御に関する制限がありますので、ご希望の動作を実現するのは難しいかもしれません。

とりあえず、問題が起きているURLを教えてもらえると有難い。
ではまた。
49
Re2:別フレームの壁紙を右クリックで切り替える。 by 95akaw 2004/01/16 (Fri) 21:49
△up
res/edit
 
早速のご返答、ありがとうございます。

>ところで「バーチャルタウン」って何?
>まずは、そこの情報を教えてくださいね。

http://www.hapitan.com/

こちらなのですが、会員でなくとも、閲覧できます、「町を覗く」から進んで2,3段掘り下げると、個別ファイルになっています、

上の部分(Frame1)に2000bytesまでのスペースが与えられます。
frame2は下の伝言板と呼ばれる部分です。

これでよろしいでしょうか?
50
Re3:別フレームの壁紙を右クリックで切り替える。 by ごだっち@管理人 2004/01/17 (Sat) 17:41
△up
res/edit
admin
 
http://homepage2.nifty.com/godakaz/laboratory/040117/

とりあえず、こんな感じの動作が出来れば良いのかな?

上のページのスクリプトは、以下の通り。

<script type="text/javascript">
<!--
function rld(){
window.self.location.reload();
}
function rl(){
setTimeout("rld()",500);
}
function al(){
// window.alert();
window.top.b.document.body.style.backgroundImage = "url(b.gif)";
return false;
}
window.onerror = rl;
window.top.b.document.body.oncontextmenu = al;
//-->
</script>

まず、最後の window.on〜系の2行について説明する。
最初の window.onerror = rl; は、このページを読み込む際にエラーが生じたら、このページを再読み込みするための関数を呼んでいる。
これは、このページを読み込むタイミングによってはまだ下のフレームが読み込み終わっていないため、次の行で指示している window.top.b.document.body が存在していない。
このため、その存在しないオブジェクトに対する oncontextmenu イベントを条件として指定しても「オブジェクトが存在しない」というエラーが発生してしまう。
これを避けるには、下のフレームが読み込み終わるのを待って上のフレームを読み込み始めれば良いのだが、今回の条件として下のフレームには手を加えないという指定があるため、上のフレーム側で処理を完了しなければならない。
それゆえ、上のフレーム側ではエラーを検出したら、0.5秒後に再読み込みを行うように設定した。

次に、window.top.b.document.body.oncontextmenu = al; だが、これは下のフレーム(ウィンドウ名を b としている)の画面内で右クリックが行われた場合に、al という名前で定義しておいた関数を呼んでいる。

そして、function al() では、下のフレームの背景を b.gif に入れ替えるのと、右クリック操作に対して何も反応しない(return false;)という処理を行っている。

ただ、今回のスクリプトで画像の保存を回避しようとしても、Netscapeなどの 「IE以外のブラウザ」には効果が無いし、そもそも「ファイル」メニューから「名前を付けて保存」すれば、画面に表示されているデータは全て好きな場所に保存できるし、Tempフォルダ内のキャッシュから取り出すことも出来るし、仮に全ての処理を禁止できたとしても、ブラウザ画面上に表示されているからには「スクリーンキャプチャ(表示されているブラウザ画面そのものをコピーする機能:ウィンドウズ標準)」を禁止する手段は基本的に無いです。

51
Re4:別フレームの壁紙を右クリックで切り替える。 by 95akaw 2004/01/20 (Tue) 18:01
△up
res/edit
 
こんなやり方もあるんですね、parent.frame2.ばかりしか頭になかったもので‥‥

>とりあえず、こんな感じの動作が出来れば良いのかな?

どうも、お手数かけて、申し訳ないのですが、下のframe2に関してはいいのですが、

上の部分に壁紙があると、上が「点滅状態」になります。
方策あるでしょうか?
52
Re5:別フレームの壁紙を右クリックで切り替える。 by ごだっち@管理人 2004/01/20 (Tue) 23:02
△up
res/edit
admin
 
http://homepage2.nifty.com/godakaz/laboratory/040120/

点滅?
最初に読み込み直されるために生じる現象のことでしょうか?

であれば、再読み込みまでの時間を調整すれば、1回だけで済みそうですね。
55
Re6:別フレームの壁紙を右クリックで切り替える。 by 95akaw 2004/01/28 (Wed) 00:58
△up
res/edit
 
>点滅?
>最初に読み込み直されるために生じる現象のことでしょうか?

すみません、
実はポップアップ広告の出るサイトで実験したもので‥‥

とんだ「お粗末」でした(/(。◇。)\ 逆立ち反省〜)
ありがとうございました。
p.ink