Мне нужно запустить функцию 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);
}
Затем в вашем скрипте, который запускается для onLoad, проверьте наличие этой переменной:
if(isPostBack) {
// do your thing
}
В противном случае вам не нужно устанавливать переменную, как в решении Джонатана. Оператор if на стороне клиента будет работать нормально, потому что переменная isPostBack будет неопределенной, что оценивается как ложное в этом операторе if.
Есть еще более простой способ, который не требует написания кода: просто добавьте эту строку в свой javascript:
if(<%=(Not Page.IsPostBack).ToString().ToLower()%>){//Your JavaScript goodies here}
or
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);
}
Надеюсь это поможет.
Вы можете поместить скрытый ввод на страницу и после загрузки страницы присвоить ему значение. Затем вы можете проверить это поле, если оно было в данных поста, это постбэк, иначе это не так.
Было два решения, в которых использовался код на стороне сервера (специфический для 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.
Здесь много вариантов.
Для чистого JS-решения ваша страница отправляется сама на себя, но с дополнительным параметром URL-адреса (mypage.html?postback=true) — затем вы можете получить URL-адрес страницы с помощью window.location.href и проанализировать его, используя разделение или регулярное выражение искать вашу переменную.
Гораздо проще, предполагая, что вы отправляете обратно на какой-то язык сценариев для обработки страницы (php/perl/asp/cf и т. д.), это заставить их повторить строку 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():"> ...
Вот один из способов (поместите это в Page_Load):
if (this.IsPostBack)
{
Page.ClientScript.RegisterStartupScript(this.GetType(),"PostbackKey","<script type='text/javascript'>var isPostBack = true;</script>");
}
Затем просто проверьте эту переменную в JS.
Создайте глобальную переменную и примените значение
<script>
var isPostBack = <%=Convert.ToString(Page.IsPostBack).ToLower()%>;
</script>
Затем вы можете ссылаться на него из другого места