ページ読み込み時にwindow.open()したいのですが

[新着] Webテンプレートを仮オープンしました



0   名前: KHA-R : 2006/04/08 04:05
はじめまして、質問です。
オンクリックで別ウィンドウを開く際、window.open()を使ってますが、
これをページ読み込み時(リンク先)にwindow.open()で再読み込みという形で使えますか?
window.open()を使う理由としてはサイズ変更とツールバーの非表示などです。
読込先で使いたい理由はJavaSciptがON/OFFでもリンクでき、リンク方法も通常のアンカータグと
セレクトボックスでのリンク(PHPで)が混在すためです。

1   名前: m035 : 2006/04/08 04:05  [URL
同じウィンドウをwindow.openで使いまわす、ということでしたら、
window.open("url","window_name","option");
という形の、window_name部分(target)を同じように指定してあげれば、
同じウィンドウが使いまわせるはずです。

#質問がいまいち理解できていませんので、
聞きたいことと違うかもしれませんが。

2   名前: KHA-R : 2006/04/08 04:05
m035 様、ご返信ありがとうございます。
通常window.openは開くページに対して使うと思うのですが
現在のページでwindow.openを使いたいと思ってます。
これはjavaScriptがOFFのクライアントでもページを開かせる目的も兼ねて
JavaScriptがONのクライアントはwindow.openで再読み込みし、
Offのクライアントは通常表示という感じでにしたいです。
わかりますかね。文章が下手で申し訳ないです。。

3   名前: m035 : 2006/04/08 04:05  [URL
window.open("url","_self","option");
こういうことでしょうか?
また、_selfはフレームではないとき_topでもかまいません。
ただし、これを使うより下記のようなリンクを使ったほうが早いです。
<a href="url" onclick="location.href=this.href">
どうしてもwindow.openが使いたければ下記です。
<a href="url" onclick="window.open(this.href,'_self','option')">
もし、window.openのoptionが目当てでも役立つ可能性は低いです。
当方の環境(WinXP上のIE6とFF1.5.0.1)ではオプションは無効でした。
(と、いうよりもむしろそのようなことが出来ると非常に不便でしょう?)

4   名前: Pid : 2006/04/08 04:05
>>2
私にはまだ意図がイマイチ分からないのですが,JavaScript が有効でも新規ウィンドウを嫌がる人だって多いですよ。どうせやるなら「JavaScript が有効の場合,新規ウィンドウで開くという選択肢も現れる」という方法を提案してみます。

>>3
必ずしも window.name を HTML の target 名と同一視できるとは限りません。MSIE は確かにそうなのですが(MSDN に明記されている),古い Mozilla だと別々だった記憶があります(そもそも仕様化されていないので,どういう実装が生まれるか予想がつかない)。


※なお,DOM2-HTML + ECMAScript 実装では,HTMLAnchorElement を評価すると HTMLAnchorElement.href を返すと決められています。ですから,<a href="sample.html" onclick="return ! open(this);"> のように直接 this を渡せます(さっき仕様を読み返して初めて知りました←情けない orz)。

5   名前: COOLSX : 2006/04/08 04:05
判読するに自動的に子画面を出したいようだが、そういう使い方は
やめといたほうがいい。昔はそれでけっこう意図を満足させられた。
いまは、閲覧者が望まない強制的なプログラムの実行(子画面、音
フラッシュ、等など)はユーザが好まないし阻止できる。
個人的に自分は子画面はどんな場合でもこちらがイベントで要求す
る以外はノーサンキュだし、JavaScriptも切っておくことすらある。

無駄な努力というべきでは。


6   名前: KHA-R : 2006/04/08 04:05
本当文章が下手で申し訳ないです。
なんかわかり易く書こうとすれするほど曖昧になってしまうみたいですね。

写真アルバム等でサムネイル画像からwindow.openを使って
本画像を別ウィンドウで表示させてます。
ページが横幅最大700pxlで2カラム式で
同ページ内に表示させるとはみ出ししまう為。
そもそもクライアントの画像クリックという要求があってからで、
ポップアップみたいものではありません。
この他にセレクトボックスで画像選択というのがあり。
普通にアンカータグでJavaScriptがOFFの場合のwindow.open代替は
出来るですが,セレクトボックスでの代替が思いつかなかっ為、
本画像を表示するページ側でwindow.openのオプションを使って
サイズ変更やツールバーの非表示等できるかなと思い質問しました。

セレクトボックスのwindow.open代替としてクッキーを仕込んで
PHPでクッキーに値があればwindow.openを使い、
クッキーが空だったら直接表示という形でやってみます。

色々ご指南いただきありがとうございました。

7   名前: Pid : 2006/04/08 04:05
たぶん,分かりやすい質問とは,

・現在どういう状況なのか
・何が問題なのか
・何をしたいのか
・何をしてみたのか/調べてみたのか

つまり,最初から >>6 のようにお書きになれば,とっても分かりやすかったと思いますよ。「ピンポイントで簡潔に質問する」というのは,前提を共有していない我々にしてみれば,かえって分かりづらいので (^^;)。


> セレクトボックスでの代替

私ならば,
・HTML 自体はリスト(ul/ol 要素)で書いておく
・スクリプトが有効ならば select 要素に変換する
・新規ウィンドウではなく,擬似ウィンドウ内に読み込ませる
のようにするかもしれません。

8   名前: KHA-R : 2006/04/08 04:05
Pid さん、その通りですね。

・新規ウィンドウではなく,擬似ウィンドウ内に読み込ませる
これはどのようにすれば良いでしょう?
新規ウィンドウ表示させないほうが有難いので。。

よろしくお願いします。

9   名前: Pid : 2006/04/08 04:05
もしウィンドウっぽい操作感が不要であるならば,

・ウィンドウっぽいスタイルの object/iframe 要素内に読み込ませれば,スクリプトは不要な気もします。
・スクリプトを使うのであれば,疑似ウィンドウ領域に img 要素を生成して src を書き換えるだけで済みます。

ウィンドウらしい操作感を出したいのであれば,

・任意のボックスをドラッグさせるスクリプトは,探せば割と見つかると思います。
※ドラッグ可能な object/iframe 要素の場合,ブラウザによっては描画のタイミングを調節しないと中身がついてこないことがあります (^^;))。

・ちょっと凝った疑似ウィンドウならば
http://www.dhtmlcentral.com/
http://www.x-desktop.org/
http://amix.dk/greybox/demo.html
を流用するという手もあります。

代替手段は noscript 要素でも十分ですね。

10   名前: Pid : 2006/04/08 04:05
オフトピですみませんが,

>>4
> (window は)仕様化されていないので,どういう実装が生まれるか予想がつかない

2006-04-07 付で W3C から Working Draft が出ましたね。上記の発言は撤回します。
http://www.w3.org/TR/Window

11   名前: KHA-R : 2006/04/08 04:05
Pidさんありがとうございます。
iframe等は出来るだけ使いたくないのでスクリプトが使える環境では
Greyboxを改造したものを使ってみようと思います。
スクリプトが使えない人は新しいウィンドウで表示。
セレクトBOXでのリンクはNOSCRIPTで代替って感じでやってみます。

非常に参考になりました。
一番勉強になったのは質問の仕方かな?笑

また宜しくお願いします。ありがとうございました!

一覧へ戻る