アプリ版:「スタンプのみでお礼する」機能のリリースについて

難しい内容かもしれませんが、宜しくお願いします。

IE4 や NN4 で例えば以下の様に、
'lay'という名前のレイヤーを作成したとします。
<DIV ID='lay' STYLE='position:absolute'></DIV>

すると以下の様に、JavaScriptから文字列 htm をレイヤーに書き込めます。
//IEの場合
document.all('lay').innerHTML=htm;
//NNの場合
document.layers['lay'].document.open();
document.layers['lay'].document.write(htm);
document.layers['lay'].document.close();

そしてレイヤーのサイズも文字列 htm の内容に合わせて変化します。
しかし以下の様に、1度でもレイヤーをクリッピングした後に、
//IEの場合
document.all('lay').style.width=100;
document.all('lay').style.height=100;
document.all('lay').style.clip='rect(0,100,100,0)';
//NNの場合
document.layers['lay'].clip.left=0;
document.layers['lay'].clip.right=100;
document.layers['lay'].clip.bottom=100;
document.layers['lay'].clip.top=0;

このレイヤーをクリッピングする前の、
文字列 htm の内容に合わせてサイズが変化していた頃の状態に、
戻す方法が分からなくて困っております。

やっぱり無理でしょうか。
何の回答もないとサミシイので、わからなくても誰か返事してあげて下さい。

A 回答 (2件)

IEでしか調べていませんが、rectにautoを指定するともとに戻るようです。


しかしここで言う”もとに戻る”は指定されているスタイルシート(レイヤー?)
の大きさに戻るという意味なので、
>document.all('lay').style.width=100;
>document.all('lay').style.height=100;
と指定されるとここに”戻る”ようです。
以下は私が書いたテストHtmlです。参考になれば幸いです。

<HTML>
<HEAD>
<TITLE>test</TITLE>
<SCRIPT Language="JavaScript">
<!--
function fn1(){
htm="testtesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttest"
document.all('lay').innerHTML=htm;
}
function fn2(){
document.all('lay').style.clip='rect(0,100,100,0)';
}
function fn3(){
document.all('lay').style.clip='rect(auto,auto,auto,auto)';
}
// -->
</SCRIPT>
</HEAD>
<BODY>
<DIV ID='lay' STYLE="position:absolute;background-color:#CCCCFF">
</DIV>
<BR><BR><BR><BR>
<FORM>
<INPUT TYPE="button" onClick="fn1()" VALUE="入力">
<INPUT TYPE="button" onClick="fn2()" VALUE="DoClip">
<INPUT TYPE="button" onClick="fn3()" VALUE="return">
</FORM>
</BODY>
</HTML>

参考URL:http://www.microsoft.com/JAPAN/developer/library …
    • good
    • 0
この回答へのお礼

凄いです!!

早速、IEで試してみると、
document.all('lay').style.width=0;
document.all('lay').style.height=0;
document.all('lay').style.clip='rect(auto,auto,auto,auto)';
で完全に元に戻りました。(凄すぎるぅぅぅ!!)
本当に本当にありがとうございました。

しかし、NNの方は auto を指定してもダメでした。
現在作成中のJavaScriptは、NNでも動作させたいので、
NNの方でご存知のお方は引き続きお待ちしております。
宜しくお願い致します。

お礼日時:2001/04/04 12:29

参考にしていただいたようで良かったです。


少し気になったところと思いつたことが有ったので補足します。

クリッピングはレイヤーの表示する範囲を決めるだけなので、autoを使用しても、
元に戻る(クリッピングを解除する)と言うわけではなく、
auto(通常)の位置にクリッピングするだけだと思うんですね。
だからNNでも
>document.layers['lay'].document.write(htm);
を実行したとき、この時点のクリップの位置を(グローバル)変数に
取っておけば良いと思います。具体的には
hensu1=document.layers['lay'].clip.left;
hensu2=document.layers['lay'].clip.right;
hensu3=document.layers['lay'].clip.bottom;
hensu4=document.layers['lay'].clip.top;
hensu5=document.layers['lay'].clip.width;
hensu6=document.layers['lay'].clip.height;
って感じです。
こうすれば、後でいろいろクリッピングしても、戻したいときに
document.layers['lay'].clip.left=hensu1;
document.layers['lay'].clip.right=hensu2;
document.layers['lay'].clip.bottom=hensu3;
document.layers['lay'].clip.top=hensu4;
document.layers['lay'].clip.width=hensu5;
document.layers['lay'].clip.height=hensu6;
と指定すれば良いんじゃないかと思います。
この方法だとIEでも使えそうですね。
NNでは全くスクリプトを作ったことが無いので自信は有りませんが・・
    • good
    • 0

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