2010-12-13 18 views
0

メインブラウザウィンドウからの更新の進行中のリストを含むポップアップブラウザウィンドウを開くための、1つ以上の効率的で信頼性の高い方法を誰かに説明できますか?ポップアップブラウザウィンドウを開いて、メインページから進行中の更新を含む方法を教えてください。

メインウィンドウで発生するマウスクリックイベントごとに1行のテキストをポップアップウィンドウに表示したいとします。私はイベントハンドラーをバインドする方法を知っていますが、空のポップアップウィンドウを開く方法は分かりません。メインページのコンテンツをシードします(たとえば、ここに表示されるイベントのウィンドウの見出し)メインウィンドウからそのウィンドウにHTMLコンテンツを追加します。

これを行う方法があるに違いありませんが、私は自分自身でそれを理解することができると確信していますが、おそらくSOからのスマートな人が私をより素早く助けることができます。このトピックに関するGoogleの検索では、チュートリアルと、メインページからプログラムで提供されるコンテンツではなく、指定されたURLのコンテンツを含むポップアップを開く方法の例が無限に表示されているようです。

また、ブラウザがポップアップをブロックする危険性が高いようですので、それを避けるためのいかなるコメントも感謝します。

「ポップアップを使用しないでください!何でも問題ありません」というようなコメントを提供したい場合は、明らかに特定のユースケースがあるため適切な装置。事前にみんなに

おかげで、 ブライアン

答えて

3

あなたは、このコードで遊ぶことができます。

var mywin = window.open("", "my_popup", "location=0,status=0,scrollbars=0,width=500,height=500"); 
var contents = "<p>HTML content...</p>"; 
$(mywin.document.body).html(contents); 
$(mywin.document.body).append(contents); 
+2

これはポップアップブロッカーによって検出され、ユーザーがJavaScriptを無効にした場合はまったく動作しないことを理解してください。 – KeithS

+0

大きな簡潔な説明。どうもありがとう。 – BrianFinkel

0

私の最初に考えたのはページと「ポップアップ」で、AJAXを実装することです。

ユーザーセッションを維持し、データベースに格納します。メインページでユーザーのアクションを追跡し、AJAXはそのアクションをDBに追跡します。 AJAXを使用してDBからレコードを取り出すポップアップにタイマーを設定します。

+0

ありがとうございますが、私はサーバーとのやりとりを必要としないソリューションを希望します。 – BrianFinkel

+0

それはなぜですか? :) –

+0

(1)これは必須ではありません。 styuの応答を参照してください。(2)私は単純に1つのウィンドウを他のウィンドウと直接通信させることができる場合、なぜ地球上でサーバへのラウンドトリップ、データベースのセットアップ(!!)、タイムドAJAXリフレッシュの実行などを行うのですか? AJAX + DBソリューションは、数桁の遅さと複雑さを伴いますが、クライアント側のソリューションにはないサーバーへの接続が必要です。クライアント専用のソリューションは、<5行のコードが必要で、AJAX + DBソリューションよりも速く、より洗練された、利用可能なパフォーマンスを提供します。 – BrianFinkel

1

レスキューにAJAXのような音がします。基本的には、ポップアップウィンドウにAJAXで更新可能なdivを作成し、JSメソッドでサーバーをポーリングして、メインウィンドウにユーザーイベントの更新があるかどうかを確認します。その場合は、新しいデータを取得してdivを更新してください。次に、バックエンドで、イベントハンドラまたは読み込みスクリプトは、ポップアップデータの基礎を形成するセッションストアに呼び出されたという事実を記録する必要があります。

これを行う方法は、使用しているWebフレームワークによって異なります。ほぼすべてにあなたが利用できるAJAXツールキットがあります。これは、AJAXの比較的単純な使い方です。

ポップアップブロッカーを回避する限り、新しいブラウザウィンドウ/タブではなくページ内にポップアップを表示させるためにCSSを使用するのが普通です。ポップアップにいくつかのGUI要素を実装して、折りたたむことができます。または、ユーザーにポップアップを許可するブロッカーを設定するように依頼してください。彼らがあなたのサイトを信頼しているなら(それは信用に値する)、大したものではありません。また、フレーム内のデータを表示することもできますが、HTMLフレームを使用すると問題が発生する可能性がありますが、CSSを使用してサイズのdivを使用してレイアウトを定義することは推奨されません。

+0

ありがとうございます。しかし、私はサーバーとのやりとりを必要としないソリューションを望んでおり、私は間違いなく別のブラウザウィンドウが必要です。 – BrianFinkel

関連する問題