プロが教える店舗&オフィスのセキュリティ対策術

いつもお世話になっております。

サムネイル画像をクリックすると大きな画像がポップアップウィンドウで表示されるページを作っています。
ツールバー等全て非表示(toolbar=noなど)をして、画像の大きさぴったりにサイズも合わせているのですが、IEで見ると何故か左と上に隙間が出来ます。

macのdreamweaverで作っていて、safariで見ると隙間は出てこないのですが、windowsのIEで見ると隙間が出来てしまいます。
これを画面ぴったりにおさめるにはどうすれば良いのでしょう。

使っているjavascriptは

<a href="javascript:;" onClick="MM_openBrWindow('img01.jpg','img01','toolbar=no,location=no,status=no,menubar=no,scrollbars=no,resizable=no,width=600,height=500')"><img src="small/img-s01.jpg" width="100" height="100" border="0"></a>

を使っています。
何に問題があるのかも教えて頂けると助かります。
宜しくお願い致します。

A 回答 (5件)

> 前回から何を疑われているのか分かりませんが、今回scriptの内容が書けたのはファイルをアップロードしておいたため自宅からページを開いて記述したというだけのことです。


> 今回は画像を直接リンクした時に余白が勝手に出来てしまうのは何故か、その余白を埋める方法はないのか、ということです。
そういう風に自宅云々だの画像の直接リンクだのはっきりと書いていただけなかったものだから分からなかったのですTT
そりゃぁ推測できない範囲でもないですが、推測が事実を当てるとは限らない…。
推量読みをして当てが外れればトンでもない勘違いの答えを出すことにもなりかねません…TT
情報を小出しにしなければ誰かがずばりと適切な答えを出せたと思いますよ…多分^^;

えーっと、リンク先の表示方式に関してですが、これはブラウザ依存の問題です。
IEは通常のウェブページでも画像をダイレクトに開いた場合でもページの左と上に空白を取ります。仕様です。
リンク先ページがHTMLであった場合CSSなどを使用して空白をゼロにすることが出来ますが、
画像を直接開いた場合、マージンなどの表示方法に関する設定を利用できないため必然的に空白が出来ます。

画像を直接開いた場合に空白をゼロにすることは出来ません。これはビュー、すなわちページの内容を解析して描画を行う部分で行われる設定であり、ウインドウ側で行われる設定ではないことと、画像を直接開いたときにビューに対して空白などの設定を行うことが出来ないことに起因します。
JavaScriptで新規ウインドウを開いたとき設定できるのはウインドウ側、ウインドウ(大きさ関連)とそれを構成する部品(標準ツールバー、アドレスバー、メニューバー、ステータスバー、スクロールバー、エクスプローラバー、リサイズボックス)に対する設定のみです。
これを回避するためにはリンク先ページをHTMLにする必要があり、たくさんの画像を扱う場合にはちょっと不便なのでCGIなどを使ってHTMLを自動生成すると便利じゃないかな、と申し上げたのです。
JavaScriptが使える状態でも使えない状態でも利用できるようにしたいようですから、JavaScriptでドキュメントを書き出すやり方は無理でしょう。
あ。何かリンク先で、JavaScriptが使えるときのみ上と左の空白をゼロにする設定を行えば理想の動作を実現できるというかベストだと思います。
CGIが使えない場合はJavaScriptが有効な環境には開かれたウインドウにHTMLを書き出させて、JavaScriptが使えない環境にはnoscriptタグに囲った範囲で画像へ直接リンクするのがベストかな?

何か解決してないのが気になったので追加回答してみました。別に意味のない内容であればスルーしていただいても構いません。
    • good
    • 0

腑に落ちないというかミステリアスなのはファイルが手元にないのにどうやってopenwindow云々のコードを提示できているのか、と言うことですね。


どこかのページを参考にしてたからそれを参考にソースを提示してるのかな、とか想像してます。

> scriptは
> リンクには
> といったものを使っています。
画像を直接開く限り上下のmarginを0にすることは出来ません。
今回の場合リンクターゲットの問題がありますから、下記のように画像ごとにHTMLファイルを用意してやるしかないですね。
こういう場合にCGIとかとの連携が使えれば楽なんですけど。

[1.htm]
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=Shift_JIS">
<title>タイトル</title>
</head>
<body style="margin:0;">
<img src="1.jpg">
</body>
</html>

[リンクの部分]
<a href="1.htm" TARGET="window_name" onClick="disp('1.htm')"><img src="s1.jpg" width="100" height="100" border="0"></a>

この回答への補足

前回から何を疑われているのか分かりませんが、今回scriptの内容が書けたのはファイルをアップロードしておいたため自宅からページを開いて記述したというだけのことです。

リンクにhtmlページを指定すればマージン等で余白を0にすることは知っています。
今回は画像を直接リンクした時に余白が勝手に出来てしまうのは何故か、その余白を埋める方法はないのか、ということです。

回答からすると「不可能」で方法は「ご存じない」ということですね。
ウィンドウの大きさを大きくするなどして他の方法を試すことにします。

補足日時:2007/04/22 00:55
    • good
    • 0

> いえ、それもわからないです…


> 関数などは全くの素人なので…
> openwindowにしてありますのでMM_openBrWindowはすみませんが忘れて下さい。
分からない分からないで片付るなぁ!^^;
具体的な情報がなければ解決できないから補足要求をしているのです。
説明をある程度読めば、ソースの一部提示くらいは出来るはずです。ソースを提示する方法が分からなければ提示の方法を補足質問すればそれでどうにかなります。
アレですよ。今回のケースではJavaScriptの詳細なソースを提示しない限り絶対に問題は解決できません。
MM_openBrWindowがopenwindowに代わっても何も進展してないです。

と言うわけでもう一度説明しなおします。

まず、<script>~</script>の中にJavaScriptの命令がある場合はその中に、src="**.jsとある場合はその指定されたファイル内にfunction openwindow() {~}という部分がありますのでその部分"{"から"}"までを抜き出して提示してください。
分からなければスクリプトの中身全部提示したほうが良いかもしれません。
スクリプトの中身が分かれば誰かがその内容を修正できます。

と言うわけでよろしく。

この回答への補足

説明不足ですみません。
分からない、というのはそのファイルが手元にないため分からないという意味です。

scriptは
<SCRIPT TYPE="text/javascript">
<!--

function disp(url){

window.open(url, "window_name", "width=600,height=500,toolbar=no,location=no,status=no,menubar=no,scrollbars=no,resizable=no");

}

// -->
</SCRIPT>

リンクには
<a href="1.jpg" TARGET="window_name" onClick="disp('1.jpg')"><img src="s1.jpg" width="100" height="100" border="0"></a>
<a href="2.jpg" TARGET="window_name" onClick="disp('2.jpg')"><img src="s2.jpg" width="100" height="100" border="0"></a>…

といったものを使っています。
リンクをクリックした時、既に子ウィンドウが開かれていた場合はその子ウィンドウに、開かれていなかった場合は子ウィンドウを開きます。
ポップアップブロックをしている閲覧者に対しても閲覧できるようhrefのリンクにもポップアップと同じリンクを指定しています。

今投稿しているブラウザIE6.0でも確認してみたところ隙間ができていました。
調べても子ウィンドウ先の位置などを指定する関数が見つかりませんでした。
直接画像をリンク先に指定した場合、IEでは仕方ないことなのでしょうか。

補足日時:2007/04/20 20:48
    • good
    • 0

> MM_openBrWindow


> これは私もわかりません。
いや、そういう意味じゃないですよ^^;
これの意味を聞かれているのではなく、これを実行するスクリプトの中身を聞いているのです。

例えばボタンをクリックしたときhoge()という操作を実行するとしていた場合、必ずスクリプトの構文にfunction hoge()と言うものが存在します。
ビルトイン関数というもので、定義付けられた一連の動作を呼び出すための代物です。
今回の場合はスクリプトの構文の中にfunction MM_openBrWindow何とかかんとかと言うのがあるからその部分を提示してくれ、といわれているのです。

この回答への補足

>いや、そういう意味じゃないですよ^^;
これの意味を聞かれているのではなく、これを実行するスクリプトの中身を聞いているのです。

いえ、それもわからないです…
関数などは全くの素人なので…

今はスクリプトを上記のものではなく、openwindowにしてありますのでMM_openBrWindowはすみませんが忘れて下さい。
左と上の空白はまだあります。

top=0 left=0を試しにつけてもみましたが関係なかったですね…

補足日時:2007/04/19 19:52
    • good
    • 0

MM_openBrWindowという関数の中身がよくわかりませんが、


ここは、window.openに変えたほうがいいんじゃないの?
なんだか、無意味な関数な気がするし。
あと、アドバイスとしては、昨今はこういう方式は嫌われ
ます。というか(私も含めて)ポップアップはブロックして
いるので、ビジターが拡大画像を無事に見られるかどうかは
わからないし。

この回答への補足

MM_openBrWindow
これは私もわかりません。
先に書いたようにdreamweaverで作っているのでつけられたものですが、window.openにしてもIEでの妙な隙間は変わりませんでした。
ポップアップブロック対応にa href=にもリンクをつけましたが、それでも隙間はうまりません。

補足日時:2007/04/18 19:44
    • good
    • 0

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