[英]Execute Javascript only on page load, not PostBack (SharePoint)
我正在尝试在SharePoint网站上的自定义页面上执行页面加载上的一些JavaScript(它使用当前用户填充人员选择器)。 问题是代码也在回发上执行,我不想要,因为它会重置对人员选择器的任何更改。
我尝试使用if(!IsPostBack)
无济于事。 在这一点上,一切都错了,给予
SCRIPT5009:'IsPostBack'未定义。
我在网上找不到任何帮助。 有任何想法吗? 谢谢
你可以创建一个这样的函数:
function IsPostBack() {
var ret = '<%= Page.IsPostBack%>' == 'True';
return ret;
}
IsPostBack
不是一个javascript变量,它是一个.NET webforms变量,仅在服务器上可用,因此客户端会抱怨它。 那么该怎么做呢? 我建议在你的控件的html中使用这个混搭:
<% if(IsPostBack) { %> <!-- runs on server -->
<script type="text/javascript">
alert('will only be printed to html if not postback');
</script>
<% } %> <!-- ends server if-block -->
您可能想尝试下面的内容。 使用JavaScript pageLoad
方法并使用PageRequestManager
对象的isInAsyncPostBack
属性来确定它是否是回发。 有关详细信息,请参阅此处的MSDN链接。
<script type="text/javascript" language="javascript">
function pageLoad(sender, args) {
if (!Sys.WebForms.PageRequestManager.getInstance().get_isInAsyncPostBack()) {
// call you JavaScript function in here
}
}
</script>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.