- - PR -
window.openでポップアップウィンドウが開かないことがある
投稿者 | 投稿内容 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2006-09-21 16:31
Webアプリケーションの導入先で、window.open によるポップアップが開かないことがある現象が起きて困っています。
問題が起きるクライアント端末は特定の物に限られているようですが、「常に開かない」のではなく、「開く場合もあれば開かない場合もある」という状態です。 使用しているブラウザは全てIE6ですが、パッチ適用状態は不明です。 ポップアップを起動する元はHTMLのa要素です(都合により文字,URL,関数名は一部変更してあります)。
JavaScriptの関数 OpenSubWin の定義は
となっています。 全く開かないのであれば設定の問題の可能性が高いのですが、時々成功するという状態なので今ひとつ原因がわかりません。 類似の現象の経験のある方がいらっしゃいましたら、アドバイスをいただければ幸いです。 | ||||||||||||
|
投稿日時: 2006-09-21 16:40
単にポップアップブロックが働いてるんじゃねーの?
_________________ 質問する前にググレカス | ||||||||||||
|
投稿日時: 2006-09-21 16:59
可能性のひとつですが、クライアントサイドのスクリプトでエラーになっているのではないでしょうか?IE だとウィンドウの左下に黄色いアイコンが出ていませんか? OpenSubWin が呼ばれていることは確認されましたか?試しに OpenSubWin の入り口に alert でも入れて、それが表示されるかを調べてみてはどうでしょうか。 なお、スクリプトがエラーになる理由として、プログラムの間違い以外として良くあるのは、文字のエンコードが間違って解釈され、ダブルクォーテーションやシングルクォーテーションで囲まれた文字列が終端しない、というエラーです。まあ、これも可能性のひとつでしかありませんが。 -- unibon {B73D0144-CD2A-11DA-8E06-0050DA15BC86} | ||||||||||||
|
投稿日時: 2006-09-21 18:10
挙動としてはポップアップブロックが一番怪しいので、現場担当者に聞いた結果、
開かないことがある箇所は他にもあって、それらに共通しているのは
として開いていると言う点で、window.open の最初の引数でURLを指定して開くものは 毎回正常に開くということがわかりました。 また、開かない場合でも XPのSP2のポップアップブロックのメッセージは出ないとのことです。 | ||||||||||||
|
投稿日時: 2006-09-21 18:15
>w.document.location.href=URL;
ブランクページが開かれた後でないと、documentができないから、とか。 w.location.href=URL; ならどうなんでしょうか。 | ||||||||||||
|
投稿日時: 2006-09-21 18:43
コードを調べても、URLを空にしてウィンドウを開いてからページを遷移させなければならない特別な理由は見あたらない雰囲気です。
に差し替えて動作テストをして問題がないなら、全部その様に書き換えようと思います。 # ノートンが入っているという追加情報が出てきたのでその線も調べてみます | ||||||||||||
|
投稿日時: 2006-09-29 08:27
window.open の最初の引数の指定で回避出来たのでこれ以上の深追いはやめておきます。
ここまでにわかったことだけまとると、 現象 window.openの最初の引数が空の文字列で、3つ目の引数にはwindow.openの引数として正しくない内容が含まれている場合に、ノートンがポップアップをブロックすることがある。 回避策(いずれか1つを実施すればOK) ・window.openの最初の引数でURLを指定する ・3つ目の引数に正しい内容をセットする ・a要素のtarget指定を使用する [ メッセージ編集済み 編集者: ひろ@ya 編集日時 2006-10-02 10:43 ] | ||||||||||||
|
投稿日時: 2006-10-02 14:42
なんか記事の追加投稿のつもりで1つ前の記事を上書きしてしまったみたいです。
間の経緯が抜けたのでもう少し追加報告しておきます 29日の投稿後に、幾つかのポップアップを開くパターンを用意したテスト用HTMLで実際に問題が起きている現場動作を確認してもらった結果、 ・window.open の1つ目の引数が空でも3つ目の引数に誤りがなければポップアップは開く ・window.open の1つ目の引数でURLが指定されている方が処理が早い(操作した人にわかるだけの差があったようです) という結果になりました。このテストの結果、 「window.openの1つ目の引数にURLを指定するようにポップアップを開く箇所を改造する」 という対応を取ることになりました。 |