我需要运行一个JavaScript函数onLoad(),但只有在第一次加载页面时才会这样做(即不是回发的结果)。
基本上,我需要在JavaScript中检查IsPostBack。
谢谢。
答案 0 :(得分:67)
服务器端,写:
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
}
你不需要设置变量,就像Jonathan的解决方案一样。客户端if语句将正常工作,因为“isPostBack”变量将是未定义的,在if语句中计算为false。
答案 1 :(得分:26)
有一种更简单的方法,不涉及在后面的代码中写任何东西:只需将此行添加到您的javascript:
if(<%=(Not Page.IsPostBack).ToString().ToLower()%>){//Your JavaScript goodies here}
或
if(<%=(Page.IsPostBack).ToString().ToLower()%>){//Your JavaScript goodies here}
答案 2 :(得分:12)
嗨试试以下......
function pageLoad (sender, args) {
alert (args._isPartialLoad);
}
结果是布尔
答案 3 :(得分: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);
}
希望这有帮助。
答案 4 :(得分:2)
您可以在页面上放置隐藏的输入,并在页面加载后为其赋值。然后你可以检查那个字段,如果它在帖子数据中,它是一个回发,否则它不是。
有两个解决方案使用服务器端代码(特定于ASP.NET)作为响应发布。我认为值得指出的是,该解决方案与技术无关,因为它仅使用客户端功能,可在所有主流浏览器中使用。
答案 5 :(得分:2)
试试这个,在这个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;
}
}
答案 6 :(得分:0)
您可以创建一个值为0的隐藏文本框。将onLoad()代码放入if块中,该块检查以确保隐藏文本框值为0.如果执行代码并将文本框值设置为1。
答案 7 :(得分:0)
这是一种方法(把它放在Page_Load中):
if (this.IsPostBack)
{
Page.ClientScript.RegisterStartupScript(this.GetType(),"PostbackKey","<script type='text/javascript'>var isPostBack = true;</script>");
}
然后在JS中检查该变量。
答案 8 :(得分:0)
这里有很多选择。
对于纯JS解决方案,让您的页面提交给自己,但使用其他URL参数(mypage.html?postback = true) - 然后您可以使用window.location.href获取页面URL,并使用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():"> ...
答案 9 :(得分:-2)
在中创建一个全局变量并应用值
<script>
var isPostBack = <%=Convert.ToString(Page.IsPostBack).ToLower()%>;
</script>
然后你可以从其他地方引用它