Мне нужно запустить функцию JavaScript onLoad(), но делать это только в том случае, если страница загружена в первый раз (т.е. не является результатом обратной передачи).
В принципе, мне нужно проверить IsPostBack в JavaScript.
Спасибо.
Мне нужно запустить функцию JavaScript onLoad(), но делать это только в том случае, если страница загружена в первый раз (т.е. не является результатом обратной передачи).
В принципе, мне нужно проверить IsPostBack в JavaScript.
Спасибо.
Серверная, напишите:
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.
Существует еще более простой способ, который не связан с записью чего-либо в коде позади: просто добавьте эту строку в свой javascript:
if(<%=(Not Page.IsPostBack).ToString().ToLower()%>){//Your JavaScript goodies here}
или
if(<%=(Page.IsPostBack).ToString().ToLower()%>){//Your JavaScript goodies here}
Привет, попробуйте следующее...
function pageLoad (sender, args) {
alert (args._isPartialLoad);
}
результатом является булевский
Решение не сработало для меня, мне пришлось его адаптировать:
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);
}
Надеюсь, что это поможет.
Вы можете поместить скрытый ввод на страницу, и после загрузки страницы придайте ей значение. Тогда вы можете проверить это поле, если оно было в данных сообщения, это postback, иначе это не так.
В качестве ответов были представлены два решения, которые использовали код на стороне сервера (специфичный для ASP.NET). Я думаю, стоит отметить, что это решение является технологическим агностиком, поскольку оно использует только функции клиентской стороны, доступные во всех основных браузерах.
Попробуйте это, в этом 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;
}
}
Вы можете создать скрытое текстовое поле со значением 0. Поместите код onLoad() в блок if, проверяющий, чтобы убедиться, что значение скрытого текстового поля равно 0. Если он выполняет код и устанавливает значение текстового поля 1.
Вот один из способов (поместите это в Page_Load):
if (this.IsPostBack)
{
Page.ClientScript.RegisterStartupScript(this.GetType(),"PostbackKey","<script type='text/javascript'>var isPostBack = true;</script>");
}
Затем просто проверьте эту переменную в JS.
Здесь много вариантов.
Для чистого решения 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():"> ...
Создайте глобальную переменную и примените значение
<script>
var isPostBack = <%=Convert.ToString(Page.IsPostBack).ToLower()%>;
</script>
Затем вы можете ссылаться на него в другом месте