Подтвердить что ты не робот

Как я могу проверить IsPostBack в JavaScript?

Мне нужно запустить функцию JavaScript onLoad(), но делать это только в том случае, если страница загружена в первый раз (т.е. не является результатом обратной передачи).

В принципе, мне нужно проверить IsPostBack в JavaScript.

Спасибо.

4b9b3361

Ответ 1

Серверная, напишите:

if(IsPostBack)
{
   // NOTE: the following uses an overload of RegisterClientScriptBlock() 
   // that will surround our string with the needed script tags 
   ClientScript.RegisterClientScriptBlock(GetType(), "IsPostBack", "var isPostBack = true;", true);
}

Затем в вашем script, который выполняется для onLoad, проверьте наличие этой переменной:

if(isPostBack) {
   // do your thing
}

Вам действительно не нужно устанавливать переменную иначе, как решение Джонатана. Оператор на стороне клиента будет работать нормально, потому что переменная isPostBack будет undefined, которая в этом выражении вычисляется как false.

Ответ 2

Существует еще более простой способ, который не связан с записью чего-либо в коде позади: просто добавьте эту строку в свой javascript:

if(<%=(Not Page.IsPostBack).ToString().ToLower()%>){//Your JavaScript goodies here}

или

if(<%=(Page.IsPostBack).ToString().ToLower()%>){//Your JavaScript goodies here}

Ответ 3

Привет, попробуйте следующее...

function pageLoad (sender, args) {

alert (args._isPartialLoad);

}

результатом является булевский

Ответ 4

Решение не сработало для меня, мне пришлось его адаптировать:

protected void Page_Load(object sender, EventArgs e)
{
    string script;
    if (IsPostBack)
    {
        script = "var isPostBack = true;";
    }
    else
    {
        script = "var isPostBack = false;";
    }
    Page.ClientScript.RegisterStartupScript(GetType(), "IsPostBack", script, true);
}

Надеюсь, что это поможет.

Ответ 5

Вы можете поместить скрытый ввод на страницу, и после загрузки страницы придайте ей значение. Тогда вы можете проверить это поле, если оно было в данных сообщения, это postback, иначе это не так.

В качестве ответов были представлены два решения, которые использовали код на стороне сервера (специфичный для ASP.NET). Я думаю, стоит отметить, что это решение является технологическим агностиком, поскольку оно использует только функции клиентской стороны, доступные во всех основных браузерах.

Ответ 6

Попробуйте это, в этом JS мы можем проверить, есть ли он назад или нет, и соответственно выполнять операции в соответствующих циклах.

    window.onload = isPostBack;

    function isPostBack() {

        if (!document.getElementById('clientSideIsPostBack')) {
            return false;
        }

        if (document.getElementById('clientSideIsPostBack').value == 'Y') {

            ***// DO ALL POST BACK RELATED WORK HERE***

            return true;
        }
        else {

            ***// DO ALL INITIAL LOAD RELATED WORK HERE***

            return false;
        }
    }

Ответ 7

Вы можете создать скрытое текстовое поле со значением 0. Поместите код onLoad() в блок if, проверяющий, чтобы убедиться, что значение скрытого текстового поля равно 0. Если он выполняет код и устанавливает значение текстового поля 1.

Ответ 8

Вот один из способов (поместите это в Page_Load):

if (this.IsPostBack)
{
    Page.ClientScript.RegisterStartupScript(this.GetType(),"PostbackKey","<script type='text/javascript'>var isPostBack = true;</script>");
}

Затем просто проверьте эту переменную в JS.

Ответ 9

Здесь много вариантов.

Для чистого решения JS отправьте свою страницу себе, но с дополнительным параметром URL (mypage.html? postback = true) - вы можете получить URL-адрес страницы с помощью window.location.href и проанализировать, что с помощью split или regex для поиска вашей переменной.

Намного проще, если вы отправляете обратно какой-то язык сценариев для обработки страницы (php/perl/asp/cf et al.), чтобы они отображали строку javascript на странице, задав переменную

<html>

<?php
if ($_POST['myVar']) {
    //postback
    echo '<script>var postingBack = true;</script>';
    //Do other processing
} else {
    echo '<script>var postingBack = false;</script>'
 } ?>
<script>
function myLoader() {
     if (postingBack == false) {
          //Do stuff
     }
 }

<body onLoad="myLoader():"> ...

Ответ 10

Создайте глобальную переменную и примените значение

<script>
       var isPostBack = <%=Convert.ToString(Page.IsPostBack).ToLower()%>;
</script>

Затем вы можете ссылаться на него в другом месте