Поместите ваш default.png в полноэкранный режим UIImageView в виде подвью в верхней части вашего основного вида, таким образом, охватывая другой пользовательский интерфейс. Установите таймер, чтобы удалить его через x секунд (возможно с эффектами), показывая ваше приложение.
Это действительно странно, действительно ли Вы уверены, что Ваш вызов Ajax не загружает новую ссылку?
Быть уверенными Вы читаете эту соответствующую спецификацию: onbeforeunload спецификация
Видит, инициировал ли вызов Ajax, возможно, какое-либо из действий, перечисленных в Для вызова таблица.
Если вы говорите о частичных обратных передачах ASP.NET AJAX, то я столкнулся с таким поведением сегодня, делая то же самое. (Если нет, проигнорируйте мое сообщение полностью.)
По моему опыту, похоже, что если ваша частичная обратная передача запускается входом , он не срабатывает перед выгрузкой во время частичной обратная передача, но если частичная обратная передача инициируется гиперссылкой , это произойдет. Похоже, браузер предполагает, что вы уходите, если щелкаете что-либо в теге привязки (проверено только в IE и FireFox, но да).
Я уже использовал, есть ли на странице определенное скрытое поле. чтобы определить на стороне клиента, когда уместно показать предупреждение о переходе, поэтому я смог исправить это очень просто, добавив проверку скрытого поля ' s к моему условию if onbeforeunload и подключению к обработчикам BeginRequest и EndRequest PageRequestManager для установки значения. Это эффективно отключает предупреждение во время частичных обратных передач. Вы могли бы добавить сюда более сложную логику, если бы хотели проверить более конкретные вещи.
Вот действительно упрощенный пример кода. (извините, если я сократил и подверг цензуре до такой степени, что это не работает, но это должно дать вам представление.)
window.onbeforeunload = checkNavigateAway;
Sys.WebForms.PageRequestManager.getInstance().add_beginRequest(onBeginRequest);
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(onEndRequest);
function onBeginRequest(sender, args) {
var navigateAwayFlag = $("input[id*='navigateAwayValue']");
if (navigateAwayFlag.length > 0) {
navigateAwayFlag[0].value = "false";
}
}
function onEndRequest(sender, args) {
var navigateAwayFlag = $("input[id*='navigateAwayValue']");
if (navigateAwayFlag.length > 0) {
navigateAwayFlag[0].value = "true";
}
}
function checkNavigateAway() {
var navigateAwayFlag = $("input[id*='navigateAwayValue']");
if (navigateAwayFlag.length > 0 && navigateAwayFlag[0].value == "true")
{
return "Warning Text";
}
}
Изменить : Плохие новости. Вышеупомянутое не работает в IE6. Похоже, что он запускает события в другом порядке, чем Firefox, поэтому onbeforeunload запускается до AJAX beginRequest ... Возможно, придется найти способ изменить значение флага с помощью щелчка по гиперссылке до срабатывания onbeforeunload.
и подключение к обработчикам BeginRequest и EndRequest PageRequestManager для установки значения. Это эффективно отключает предупреждение во время частичных обратных передач. Вы могли бы добавить сюда более сложную логику, если бы хотели проверить более конкретные вещи.Вот действительно упрощенный пример кода. (извините, если я сократил и подверг цензуре до такой степени, что это не работает, но это должно дать вам представление.)
window.onbeforeunload = checkNavigateAway;
Sys.WebForms.PageRequestManager.getInstance().add_beginRequest(onBeginRequest);
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(onEndRequest);
function onBeginRequest(sender, args) {
var navigateAwayFlag = $("input[id*='navigateAwayValue']");
if (navigateAwayFlag.length > 0) {
navigateAwayFlag[0].value = "false";
}
}
function onEndRequest(sender, args) {
var navigateAwayFlag = $("input[id*='navigateAwayValue']");
if (navigateAwayFlag.length > 0) {
navigateAwayFlag[0].value = "true";
}
}
function checkNavigateAway() {
var navigateAwayFlag = $("input[id*='navigateAwayValue']");
if (navigateAwayFlag.length > 0 && navigateAwayFlag[0].value == "true")
{
return "Warning Text";
}
}
Изменить : Плохие новости. Вышеупомянутое не работает в IE6. Похоже, что он запускает события в другом порядке, чем Firefox, поэтому onbeforeunload запускается до AJAX beginRequest ... Возможно, придется найти способ изменить значение флага с помощью щелчка по гиперссылке до срабатывания onbeforeunload.
и подключение к обработчикам BeginRequest и EndRequest PageRequestManager для установки значения. Это эффективно отключает предупреждение во время частичных обратных передач. Вы могли бы добавить сюда более сложную логику, если бы хотели проверить более конкретные вещи.Вот действительно упрощенный пример кода. (извините, если я сократил и подверг цензуре до такой степени, что это не работает, но это должно дать вам представление.)
window.onbeforeunload = checkNavigateAway;
Sys.WebForms.PageRequestManager.getInstance().add_beginRequest(onBeginRequest);
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(onEndRequest);
function onBeginRequest(sender, args) {
var navigateAwayFlag = $("input[id*='navigateAwayValue']");
if (navigateAwayFlag.length > 0) {
navigateAwayFlag[0].value = "false";
}
}
function onEndRequest(sender, args) {
var navigateAwayFlag = $("input[id*='navigateAwayValue']");
if (navigateAwayFlag.length > 0) {
navigateAwayFlag[0].value = "true";
}
}
function checkNavigateAway() {
var navigateAwayFlag = $("input[id*='navigateAwayValue']");
if (navigateAwayFlag.length > 0 && navigateAwayFlag[0].value == "true")
{
return "Warning Text";
}
}
Изменить : Плохие новости. Вышеупомянутое не работает в IE6. Похоже, что он запускает события в другом порядке, чем Firefox, поэтому onbeforeunload запускается до AJAX beginRequest ... Возможно, придется найти способ изменить значение флага с помощью щелчка по гиперссылке до срабатывания onbeforeunload.
Это эффективно отключает предупреждение во время частичных обратных передач. Вы могли бы добавить сюда более сложную логику, если бы хотели проверить более конкретные вещи.Вот действительно упрощенный пример кода. (извините, если я сократил и подверг цензуре до такой степени, что это не работает, но это должно дать вам представление.)
window.onbeforeunload = checkNavigateAway;
Sys.WebForms.PageRequestManager.getInstance().add_beginRequest(onBeginRequest);
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(onEndRequest);
function onBeginRequest(sender, args) {
var navigateAwayFlag = $("input[id*='navigateAwayValue']");
if (navigateAwayFlag.length > 0) {
navigateAwayFlag[0].value = "false";
}
}
function onEndRequest(sender, args) {
var navigateAwayFlag = $("input[id*='navigateAwayValue']");
if (navigateAwayFlag.length > 0) {
navigateAwayFlag[0].value = "true";
}
}
function checkNavigateAway() {
var navigateAwayFlag = $("input[id*='navigateAwayValue']");
if (navigateAwayFlag.length > 0 && navigateAwayFlag[0].value == "true")
{
return "Warning Text";
}
}
Изменить : Плохие новости. Вышеупомянутое не работает в IE6. Похоже, что он запускает события в другом порядке, чем Firefox, поэтому onbeforeunload запускается до AJAX beginRequest ... Возможно, придется найти способ изменить значение флага с помощью щелчка по гиперссылке до срабатывания onbeforeunload.
Это эффективно отключает предупреждение во время частичных обратных передач. Вы могли бы добавить сюда более сложную логику, если бы хотели проверить более конкретные вещи.Вот действительно упрощенный пример кода. (извините, если я сократил и подверг цензуре до такой степени, что это не работает, но это должно дать вам представление.)
window.onbeforeunload = checkNavigateAway;
Sys.WebForms.PageRequestManager.getInstance().add_beginRequest(onBeginRequest);
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(onEndRequest);
function onBeginRequest(sender, args) {
var navigateAwayFlag = $("input[id*='navigateAwayValue']");
if (navigateAwayFlag.length > 0) {
navigateAwayFlag[0].value = "false";
}
}
function onEndRequest(sender, args) {
var navigateAwayFlag = $("input[id*='navigateAwayValue']");
if (navigateAwayFlag.length > 0) {
navigateAwayFlag[0].value = "true";
}
}
function checkNavigateAway() {
var navigateAwayFlag = $("input[id*='navigateAwayValue']");
if (navigateAwayFlag.length > 0 && navigateAwayFlag[0].value == "true")
{
return "Warning Text";
}
}
Изменить : Плохие новости. Вышеупомянутое не работает в IE6. Похоже, что он запускает события в другом порядке, чем Firefox, поэтому onbeforeunload запускается до AJAX beginRequest ... Возможно, придется найти способ изменить значение флага с помощью щелчка по гиперссылке до срабатывания onbeforeunload.
(извините, если я сократил и подверг цензуре до такой степени, что это не работает, но это должно дать вам представление.)window.onbeforeunload = checkNavigateAway;
Sys.WebForms.PageRequestManager.getInstance().add_beginRequest(onBeginRequest);
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(onEndRequest);
function onBeginRequest(sender, args) {
var navigateAwayFlag = $("input[id*='navigateAwayValue']");
if (navigateAwayFlag.length > 0) {
navigateAwayFlag[0].value = "false";
}
}
function onEndRequest(sender, args) {
var navigateAwayFlag = $("input[id*='navigateAwayValue']");
if (navigateAwayFlag.length > 0) {
navigateAwayFlag[0].value = "true";
}
}
function checkNavigateAway() {
var navigateAwayFlag = $("input[id*='navigateAwayValue']");
if (navigateAwayFlag.length > 0 && navigateAwayFlag[0].value == "true")
{
return "Warning Text";
}
}
Изменить : Плохие новости. Вышеупомянутое не работает в IE6. Похоже, что он запускает события в другом порядке, чем Firefox, поэтому onbeforeunload запускается до AJAX beginRequest ... Возможно, придется найти способ изменить значение флага с помощью щелчка по гиперссылке до срабатывания onbeforeunload.
(извините, если я сократил и подверг цензуре до такой степени, что это не работает, но это должно дать вам представление.)window.onbeforeunload = checkNavigateAway;
Sys.WebForms.PageRequestManager.getInstance().add_beginRequest(onBeginRequest);
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(onEndRequest);
function onBeginRequest(sender, args) {
var navigateAwayFlag = $("input[id*='navigateAwayValue']");
if (navigateAwayFlag.length > 0) {
navigateAwayFlag[0].value = "false";
}
}
function onEndRequest(sender, args) {
var navigateAwayFlag = $("input[id*='navigateAwayValue']");
if (navigateAwayFlag.length > 0) {
navigateAwayFlag[0].value = "true";
}
}
function checkNavigateAway() {
var navigateAwayFlag = $("input[id*='navigateAwayValue']");
if (navigateAwayFlag.length > 0 && navigateAwayFlag[0].value == "true")
{
return "Warning Text";
}
}
Изменить : Плохие новости. Вышеупомянутое не работает в IE6. Похоже, что он запускает события в другом порядке, чем Firefox, поэтому onbeforeunload запускается до AJAX beginRequest ... Возможно, придется найти способ изменить значение флага с помощью щелчка по гиперссылке до срабатывания onbeforeunload.
Я сделал что-то вроде этого:
внутри тега тела:
var allowConfirm = true;
window.onbeforeunload = confirmExit;
function confirmExit()
{
if(allowConfirm)
return "Are you sure you want to navigate away from this page?";
else
allowConfirm = true;
}
Когда я выхожу из системы, я вызываю этот сценарий:
allowConfirm = false; вернуть window.location.href;
Это действительно работает:
OnClientClick="eval(this.href);return false"
Если вы хотите запускать постбэк по гиперссылке, есть простой обходной путь: Вместо
или
просто используйте этот код:
Похоже, что IE срабатывает событие onbeforeunload, если содержимое href-атрибута гиперссылки не является текущей страницей (на что указывает символ sharp).