Если вы все еще работаете в Swift 1.x
, попробуйте,
let testArray = ["A","B","C"]
let indexOfA = find(testArray, "A")
let indexOfB = find(testArray, "B")
let indexOfC = find(testArray, "C")
Одним путем Вы могли сделать, который должен обеспечить электричеством Приложение. Обработчик загрузок в Приложении. Init, затем имейте тот обработчик, развязывают себя после выполнения:
Sys.Application.add_init(AppInit);
function AppInit() {
Sys.Application.add_load(RunOnce);
}
function RunOnce() {
// This will only happen once per GET request to the page.
Sys.Application.remove_load(RunOnce);
}
Это выполнится после Приложения. Init. Это должна быть последняя вещь, прежде чем pageLoad назовут.
То, что можно сделать, соединить проводом до события загрузки Sys. Класс приложений. можно затем использовать isPartialLoad свойство Sys. Класс ApplicationLoadEventArgs. Я полагаю, что это сообщило бы, находитесь ли Вы в асинхронной обратной передаче или нет.
Чтобы знать, находитесь ли Вы в сообщении назад, необходимо будет обработать это в серверном коде и испустить это клиенту.
@Darren: Спасибо за ответ. Я попытался создать pageLoad с аргументом события ApplicationLoadEventArgs как параметр (см. ниже). Однако согласно этому:
Событие загрузки генерируется для всех обратных передач к серверу, который включает асинхронные обратные передачи.
Как Вы указали, isPartialLoad свойство не покрывает все сценарии обратной передачи. Будет хорошо, если аргумент события также будет содержать isPostback свойство.
function pageLoad(sender, arg) {
if (!arg.get_isPartialLoad()) {
//code to be executed only on the first load
}
}
@mmattax: я ищу свойство, которое можно назвать от клиентского (JavaScript).
У Вас мог быть скрытый вход, который Вы устанавливаете на известное значение на стороне сервера, если это - обратная передача/обратный вызов - и Ваш JavaScript мог бы проверить то значение.
Тем не менее я действительно надеюсь, что существует решение только для клиента для этого.
Править: @mmattax - я полагаю, что он ищет клиентское решение - JavaScript, эквивалентный из этого.
Приложение. Init является, вероятно, более соответствующим событием для использования, если Вы только хотите, чтобы код выполнился на первой загрузке.
Можно все еще использовать Page. IsPostback во время асинхронного вызова.
@Dave Ward: Это обычно работало бы. Однако код должен присоединить событие на объекте поведения. Поскольку создание объекта поведения происходит во время Приложения. Init, присоединяя к тому событию приведет к непредсказуемому поведению.
Будет хорошо, если будет событие PostInit.
@Dave Ward: использование метода RunOnce работает отлично. Это решает мою проблему, не имея обходного решения для проверки сначала, существует ли обработчик уже прежде, чем присоединить к событию.
Я отмечу Ваш ответ как принятый ответ. Еще раз спасибо.
Вот наш Ajax, эквивалентный isPostback, который мы использовали некоторое время.
public static bool isAjaxRequest(System.Web.HttpRequest request)
{//Checks to see if the request is an Ajax request
if (request.ServerVariables["HTTP_X_MICROSOFTAJAX"] != null ||
request.Form["__CALLBACKID"] != null)
return true;
else
return false;
}