Открыть дочернее окно в ASP.NET и вернуть статус активности дочернего окна
Привет Друзья,
Я столкнулся с проблемой в asp.net, C#.net и программирование на javascript.
Пожалуйста, перейдите по следующей ссылке, чтобы сначала посмотреть видео
справка-YouTube[^]
Проблема
моя проблема заключается в том, что я создал веб-страницу в asp.net где я извлекаю какой-то url-адрес из базы данных с помощью кнопки и открываю эти url-ссылки в дочернем окне, и хочу получить ответ от дочернего окна, что оно закрыто пользователем или "тайм-аут закрытия", как мы определили. мы используем javascript для открытия и закрытия дочернего окна, от имени ответа дочернего окна я делаю некоторые обновления в Родительском окне, но я не могу получить этот ответ.
Что я уже пробовал:
Я пробовал GridView & amp; repeater с javascript.
В gridview с javascript я столкнулся с проблемой, которая заключается в том, что мы извлекли url-ссылки из базы данных, когда мы передаем url-ссылку при вызове функции javascript(аргумент), то она берет url-адрес и открывает эту ссылку в другом дочернем окне, но скрипт не работает, чтобы закрыть его в нужный момент времени, если мы передадим определенный url-адрес, то он будет работать правильно и изменит статус кнопки. А если пользователь закроет окно принудительно и тогда оно не должно будет менять статус кнопки, но оно изменило статус.
Когда мы используем ретранслятор со скриптом, он закрывает окно вовремя, но если пользователь закрывает дочернее окно, то он также меняет статус кнопки, и одна из самых больших проблем заключается в том, что он сохраняет состояние всех кнопок при первом щелчке.
нам нужно решение,
1.) кнопка закрытия дочернего окна должна быть отключена.
2.) состояние кнопки должно быть отключено точно только для одной кнопки, которая находится в рабочем состоянии.
3.) дочернее окно должно быть закрыто в ожидаемое время или если пользователь закроет дочернее окно, то не должно быть изменения состояния кнопки.
Мой код приведен ниже здесь:
одной.код aspx-страницы
<form id="form1" runat="server"> <table class="table table-striped table-bordered table-hover dataTable" style="background-color: #EAEAEA; border: 1; height: 250px; width: 1048px"> <asp:Repeater ID="rptHotItems" runat="server" OnItemDataBound="rptHotItems_ItemDataBound"> <HeaderTemplate> <thead> <tr> <th> Sr.No </th> <th> ADD Name </th> <th> ADD URL </th> <th> Status/Action </th> </tr> </thead> <tbody> </HeaderTemplate> <ItemTemplate> <tr> <%-- <td> <asp:Label ID="lblSno" runat="server" Text='<%#Container.ItemIndex+1 %>'></asp:Label> </td> --%> <td> <asp:Label ID="lbl_id" runat="server" Text='<%#Eval("work_id") %>'></asp:Label> </td> <td> <asp:Label ID="Ads_name" runat="server" Text='<%#Eval("Ads_name") %>'></asp:Label> </td> <td> <asp:Label ID="lbl_url" runat="server" Text='<%#Eval("Ads_url") %>'></asp:Label> </td> <%-- <td><asp:Button ID="Button1" runat="server" Text="Button" OnClientClick="stopCount();" /></td>--%> <td> <asp:Button ID="Addbutton" class='<%#Eval("Ads_url") %>' runat="server" ForeColor="white" Text="Pending" BackColor="red" /> </td> </ItemTemplate> </asp:Repeater> </table> <asp:HiddenField ID="hdncolorval" runat="server" /> </div> <center><asp:Button ID="btnsubmit" runat="server" Text="Submit" onclick="btnsubmit_Click1" /></center> </form>
В приведенном выше коде мы просто показываем текст url-адреса и даем ссылку на кнопку, которая открывает дочернее окно в приведенном ниже коде javascript, показывающем, как он работает. он открывает окно url(дочерний) и изменяет статус кнопки на цвет (красный/зеленый или ожидающий / нажатый).
javascript-код на links. aspx
function Showpopup(crlid, link) { popup_window = window.open(link, "List", "toolbar=no, location=no,status=yes,menubar=no,scrollbars=yes,resizable=no, width=900,height=500,left=430,top=100"); popup_window.focus(); function test() { setTimeout(function () { document.getElementById(crlid).value = "Clicked"; document.getElementById(crlid).style.background = "green"; document.getElementById(crlid).disabled = true; popup_window.close(); }, 15000); document.getElementById(crlid).style.background = "red"; document.getElementById(crlid).disabled = true; } test(); window.onbeforeunload = function (e) { window.parent.functonToCallBeforeThisWindowCloses(); }; function test1() { document.getElementById(crlid).style.background = "red"; document.getElementById(crlid).disabled = true; } }
одной.aspx-файл.CS коде
protected void rptHotItems_ItemDataBound(object sender, RepeaterItemEventArgs e) { if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) { Button Addbutton = (Button)e.Item.FindControl("Addbutton"); Label lbl_url = (Label)e.Item.FindControl("lbl_url"); Addbutton.Attributes.Add("onclick", "javascript:Showpopup('" + Addbutton.ClientID + "', '" + lbl_url.Text + "');return false;"); con.Close(); } } }
В приведенном выше коде он обрабатывает кнопки.
Открытая лицензия проекта кода (CPOL) предназначена для предоставления разработчикам, которые решают поделиться своим кодом, лицензии, которая защищает их и предоставляет пользователям их кода четкое заявление о том, как этот код может быть использован.
CPOL - это наш подарок обществу. Мы рекомендуем всем использовать эту лицензию по своему желанию независимо от того, размещен ли код на сайте. CodeProject.com.
Richard Deeming
"Кнопка закрытия дочернего окна должна быть отключена."
Нет. Javascript не может открыть всплывающее окно и предотвратить его закрытие. Если бы это было так, каждый фишинговый, вредоносный и мошеннический сайт технической поддержки использовал бы его в гнусных целях.
Y0Y0@nK!Y
Мистер Диминг, сначала просто посмотрите видео ,а потом говорите
Richard Deeming
Мне не нужно смотреть видео, чтобы сказать вам, что отключить кнопку "Закрыть" в дочернем окне, открытом из Javascript, невозможно.
Y0Y0@nK!Y
Нет ничего невозможного, сэр, если вам не хватает знаний, значит, это ваша вина.
Richard Deeming
Многие вещи невозможны, часто по соображениям безопасности.
Не имеет значения, насколько вам "нужна" эта функция; если бы это было возможно, это было бы угрозой безопасности. Поэтому это невозможно.
Даже если вы нашли хак, чтобы заставить его работать в одном браузере, эта уязвимость безопасности будет исправлена довольно быстро.