<script language="javascript" type="text/javascript">
function pageLoad() {
ShowPopup();
}
</script>
上述代码将在ShowPopup
上致电pageLoad()
。
我需要ShowPopup
方法才能第一次使用
即;
需要检查IsPostback
的{{1}}属性。
我可以从客户端(JavaScript)执行此操作。?
答案 0 :(得分:2)
当然,您可以使用脚本标记将服务器端属性值注入标记:
C#:
if (<%=(!Page.IsPostBack).ToString() %>) ShowPopup();
VB.NET
if(<%=(Not Page.isPostBack).ToString().ToLower() %>) ShowPopup();
答案 1 :(得分:2)
您可以简单地利用JavaScript闭包并根据需要随时调用
function once(fn) {
return function() {
fn.apply(this, arguments);
fn = function() {};
}
}
function pageLoad() {
if(bPostBack == null)
ShowPopup();
}
pageLoad = once(pageLoad);
这样,pageLoad函数只会在之后运行一次,它只执行一个空函数..
或者你可以稍微简化一下:
function pageLoad() {
console.log("foo");
pageLoad = function() {};
}
(注意上面的一次函数更通用..但两者都做你需要的)
更新:如果您的页面重新加载,这显然不起作用,因为JavaScrip只是一次又一次地重新运行。在这种情况下,您需要设置一个cookie或一些其他可以检索的标志来检查弹出窗口是否已经显示..
你可以使用HTML5 Localstorage - 但是所有浏览器都不支持.. 更好的想法是生成一个可以像本文所述检索的cookie: http://www.quirksmode.org/js/cookies.html
答案 2 :(得分:1)
是的,你可以使用这样的javascript变量:
在您的代码背后,当发回消息时,请调用以下代码来注册javascript块。
ClientScript.RegisterClientScriptBlock(GetType(), "postbackFlag", "var bPostBack = true;", true);
并在你的javascript中检查此变量的值以检测回发的发生:
<script>
function pageLoad() {
if(bPostBack == null)
ShowPopup();
}
</script>