簡體   English   中英

Asp.net 和 JavaScript 彈出窗口

[英]Asp.net and JavaScript pop up windows

我正在編寫一個 Intranet 應用程序,並正在考慮使用彈出窗口。 我不擔心可訪問性,因為它是一個 Intranet 應用程序。

這種情況是,我需要能夠在服務器頁面以及進程中間使用相同的代碼; 這就是為什么我決定在過程中使用它時,最好將它作為一個彈出窗口,以耗盡屏幕上的空間。

對此有何想法? 我對以這種方式使用彈出窗口猶豫不決,因為我通常只將它用於錯誤消息。

我不完全理解你想要做什么,但我認為如果用戶的瀏覽器自動阻止彈出窗口,彈出窗口可能會有些問題。 另外,如果您試圖在彈出窗口中運行一個進程,用戶可以關閉它並且不再有辦法檢查該進程。

是否可以使用 Ajax 回調提供有關流程的頁面信息的 Web 服務? 您可以為用戶提供一種方法來進行 Ajax 調用以檢查進程的狀態,或者只是讓它在后台持續輪詢。

編輯:

你說你對 Ajax 不太熟悉。 在大多數情況下,有一些庫可以處理所有的硬細節。 我會推薦jQuery,因為這是我已經使用了一段時間了。

如果您采用 Ajax 路線,您將能夠在一個頁面上包含所有內容,並在 Ajax 調用成功時進行您需要進行的更新。 根據你編寫代碼的方式,如果你做得對,它應該是非常可重用的。 這實際上取決於您對每個頁面的需求的具體程度。

不過,請查看 jQuery 文檔。 它可能已經內置了您需要的東西。 否則,其他人可能會提出一些為什么他們最喜歡的 JavaScript 庫更適合您嘗試做的事情的原因。

我想你可能想做這樣的事情:

父頁面內部:

<input id="btnShowModal" runat="server" type="button" value='Show Modal' onclick="ShowModal()" />

function ShowModal()
{
   var retVal = window.showModalDialog("MyPopup.aspx?param1=value","","center=yes;dialogWidth=200px;dialogHeight=200px;status:0;help:0")

   if(retVal !=  "" && retVal != undefined)
   {
       //This code will be executed when the modal popup is closed, retVal will contain the value assigned to window.returnValue               
    }
}

在模態彈出窗口內部:

<input id="btnSave" runat="server" type="button" value='Save' onclick="Save()" />

function Save()
{
   window.returnValue = "Whatever you want returned to the parent here"
   window.close()
}

反對彈出窗口的常見論點是它們不可靠。 用戶可能禁用了腳本啟動的彈出窗口,我知道我有。
在受控環境中,例如內聯網,您可能可以保證情況並非如此,但即便如此,為什么要冒險,還有另一種選擇。
而不是彈出一個新窗口,只需將一個新的、絕對定位的 <div> 插入到文檔中,然后使用 ajax 甚至 <iframe> 將您的內容插入其中。 網絡上有很多示例/庫。
例如,jQuery 的厚框 當然也有不需要庫的腳本。

我試圖避免使用 AJAX,僅僅是因為我從未使用過並且現在沒有時間學習它。 不過,我並不完全反對。

簡而言之,我需要做的是讓彈出窗口與頁面交互。 想象一下,在頁面上我正在構建鏈的鏈接。 每個鏈接都有獨特的屬性。 當用戶點擊“添加鏈接”按鈕時,我想有一個帶有小表單和保存按鈕的彈出窗口。 唯一的問題是彈出窗口需要與頁面交互; 我們需要知道什么時候已經保存或沒有保存。

同一頁面上的 div 是一種方式。 彈出窗口是另一種方式。 另一個問題是此代碼(添加新鏈接)需要可重用,因為我還將擁有一個僅創建新鏈接的頁面。

謝謝,我會調查一下。 值得一提的是:這是一個受控環境,當前的Intranet站點嚴重依賴Javascript,因此這不是問題-它始終處於打開狀態。

那么,您是說不可能將值從彈出窗口傳遞回頁面嗎? 因為這對我來說是最簡單的方法,而無需查看任何文檔。

我通常使用帶有 z-index 和絕對定位的 div; .show() 可以按需編寫和調用,它會有一個 .close() 按鈕,AJAX 可以使它看起來像模態,因此如果您願意,必須單擊以關閉它。 再說一次,我討厭消息框。

就IE而言:我們不正式支持FF,但我不喜歡編寫對FF不起作用的應用程序,因為我是FF用戶。 但是無論如何,在這種情況下,我可能只使用window.showModalDialog

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM