2010-12-13 57 views
0

任何人都可以向我解釋一個或多個有效的,可靠的方法來打開一個彈出式瀏覽器窗口,其中將包含主瀏覽器窗口正在進行的更新列表?如何打開一個彈出的瀏覽器窗口來包含主頁面上正在進行的更新?

想象一下,我只是想在文字出現這種情況在主窗口中的每個鼠標點擊事件的彈出窗口一行顯示。我知道如何綁定事件處理程序,但我不知道如何打開一個空的彈出窗口,使用主頁面中的一些內容(例如,標題爲「Events Shown Here!」的窗口的標題)然後將HTML內容添加到主窗口中的該窗口。

必須有這樣做的方法,我敢肯定,我可以算出它在我自己最終,但也許從SO一些尖子能幫助我更快。關於此主題的Google搜索似乎產生了無數的教程和示例列表,其中包含如何打開包含指定網址內容的彈出窗口,而不是通過主頁面以編程方式提供的內容。

看起來也似乎是具有瀏覽器阻止彈出窗口的高風險,所以就避免了任何的評論將不勝感激。

如果有人願意提供諸如「絕不使用彈出窗口!他們總是吸不管是什麼」的評論,「只要他們不僅僅是一個火焰,就可以自由自在,因爲顯然有第二個窗口是某些用例一個合適的設備。

感謝大家提前, 布賴恩

回答

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 2010-12-13 20:49:43

+0

偉大的簡潔說明。非常感謝。 – BrianFinkel 2010-12-14 21:02:53

0

我最初的想法是實現AJAX,頁面上的「彈出」。

保存的用戶會話,將其存儲在數據庫中。跟蹤用戶在主頁面上的操作,將這些操作AJAX添加到數據庫。在Pop-Up上設置一個計時器,該計時器使用AJAX從數據庫中提取記錄。

+0

謝謝,但我想要一個不需要服務器交互的解決方案。 – BrianFinkel 2010-12-13 21:06:36

+0

爲什麼呢? :) – 2010-12-13 21:41:43

+0

(1)沒有必要;見styu的回答。(2)當我可以簡單地讓一個窗口與另一個窗口直接通信時,爲什麼我會涉及往返服務器,設置數據庫(!!),定時執行AJAX刷新等等。一個AJAX + DB解決方案的速度要慢幾個數量級,而且要更復雜一些,而且它需要連接服務器,而客戶端解決方案則不需要。客戶端解決方案涉及<5行代碼,並且提供比AJAX + DB解決方案更快,更清潔,更可用的性能,這需要更多的工作和移動部件。 – BrianFinkel 2010-12-13 22:51:34

1

聽起來像AJAX救援。基本上,您希望在彈出窗口中創建一個AJAX可更新的div,並讓JS方法輪詢服務器以查看是否在主窗口中更新了用戶事件。如果是這樣,請獲取新數據並使用它刷新div。然後,在後端,您的事件處理程序或加載腳本應記錄它們被調用到某個會話存儲的事實,這些會話存儲形成彈出數據的基礎。

你究竟是如何做到這一點取決於你所使用的web框架;幾乎所有的人都可以使用某種AJAX工具包。這是一個相對簡單的使用AJAX。

至於讓周圍彈出窗口攔截器,使用CSS使彈出出現在頁面而不是作爲一個新的瀏覽器窗口/標籤通常是卓有成效的;然後您可以在彈出窗口中實現一些GUI元素以將其摺疊,從而避開它。或者,只需要讓用戶配置他們的攔截器以允許彈出窗口。如果他們信任你的網站(這是值得信任的),不要大驚小怪。您也可以在框架中顯示數據,但使用HTML框架可能會有問題,並且幾乎不贊成使用CSS來定義使用大小的div的佈局。

+0

謝謝,但我想要一個不需要服務器交互的解決方案,我絕對需要一個單獨的瀏覽器窗口。 – BrianFinkel 2010-12-13 21:08:17

相關問題