Концепция
Всякий раз, когда вы открываете окно с главной страницы, сохранить ссылку на открывшемся окне (толкая его на массив хорошо работает). Когда нажата кнопка главной страницы, закройте каждое окно с ссылкой.
Client Script
Этот JavaScript для главной страницы. Это работает для страницы HTML или ASPX.
var arrWindowRefs = [];
//... assume many references are added to this array - as each window is open...
//Close them all by calling this function.
function CloseSpawnedWindows() {
for (var idx in arrWindowRefs)
arrWindowRefs[idx].close();
}
Открытие окна и толкая его на выше массив выглядит примерно так:
// Spawn a child window and keep its reference.
var handle = window.open('about:blank');
arrWindowRefs.push(handle);
Microsoft's JavaScript window.open(..) method and its arguments are outlined here.
В разных браузерах могут быть варианты или собственные способы сохранить ссылки на открытые окна или перечислить их, но этот чистый способ JavaScript очень совместим с браузерами.
Кнопка
Наконец кнопку Input HTML инициировать приведенный выше код будет
<input type="button"
name="btn1" id="btn1" value="Click Me To Close All Windows"
onclick="CloseSpawnedWindows()">
Если это элемент управления Button ASP.NET затем вызвать JavaScript таким образом
<asp:Button ID="Button1" runat="server" Text="Click Me To Close All Windows"
OnClientClick="CloseSpawnedWindows()" />
клиент сценария Устранение неполадок ASP.NET (PostBack и AJAX исправление)
Если ASPX страница сообщений обратно на сервер, клиентский код будет разрушен, и потерять это массив с оконными ребенком ссылки (и эти окна будут остаются открытыми). Если это вызывает беспокойство, вы можете использовать AJAX для частичного обновления страниц, чтобы предотвратить уничтожение всей страницы и ее скриптов.
(показано с помощью Framework 3.5 образцов)
Для ASP.NET AJAX вы будете использовать что-то вроде ScriptManager инстанции enable partial page refresh внутри UpdatePanel controls (lots of samples).
<%@Page... %>
<asp:ScriptManager EnablePartialRendering="True" /> Enable AJAX.
<script>
// PUT JAVASCRIPT OUT HERE SOMEWHERE.
// Notice the client script here is outside the UpdatePanel controls,
// to prevent script from being destroyed by AJAX panel refresh.
</script>
<asp:UpdatePanel ID="area1" runat="server" ... > ... </asp:UpdatePanel>
<asp:UpdatePanel ID="area2" runat="server" ... > ... </asp:UpdatePanel>
etc...
Более подробная информация об ASP.NET AJAX может быть предоставлена, но это только начало, если оно вам понадобится.
Помните, что в случае AJAX не обновляйте часть страницы, содержащую указанный выше клиентский скрипт, потому что вы хотите, чтобы она сохраняла массив через обратные вызовы сервера.