【问题标题】:Execute Javascript only on page load, not PostBack (SharePoint)仅在页面加载时执行 Javascript,而不是 PostBack (SharePoint)
【发布时间】:2015-01-14 16:26:19
【问题描述】:

我正在尝试在 SharePoint 网站上的自定义页面上的页面加载时执行一些 JavaScript(它使用当前用户填充人员选择器)。问题是代码也在回发时执行,我不希望这样做,因为它会重置对人员选择器的任何更改。

我尝试使用if(!IsPostBack) 无济于事。那时一切都会出错,给

SCRIPT5009:“IsPostBack”未定义。

我在网上找不到任何可以帮助解决此问题的信息。有任何想法吗?谢谢

【问题讨论】:

  • IsPostBack 在服务器端代码中可用,只是澄清一下,您是否在 javascript 中使用它?
  • 是的。但我无法让它工作
  • 我的意思是因为它在服务器端代码支持属性中可用,你不能在javascript 中使用它,而是看看发布的答案。如果这不起作用,请告诉我,我将尝试发布答案。
  • 因为它在 SharePoint 上,所以我无权访问代码隐藏。一位同事分享了一些他们用来检查文档引用者的代码。该功能现在对我有用。感谢您的帮助

标签: javascript jquery asp.net sharepoint peoplepicker


【解决方案1】:

你可以像这样创建一个函数:

function IsPostBack() {
    var ret = '<%= Page.IsPostBack%>' == 'True';
    return ret;
}

【讨论】:

  • 是的,这很有效 - 太棒了!我一直在努力寻找一种方法来让我的 UpdatePanel 内容在(初始内容显示/)页面加载后立即显示。这相当简单,但 UI 闪烁,因为它不断循环导致页面加载 - 但仅此而已!谢谢 CADMan 先生! :)
【解决方案2】:

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变量。这是根本问题
【解决方案3】:

您可能想尝试以下方法。使用JavaScript的pageLoad方法,使用PageRequestManager对象的isInAsyncPostBack属性判断是否为回发。有关详细信息,请参阅 MSDN 链接here

<script type="text/javascript" language="javascript">
  function pageLoad(sender, args) {
    if (!Sys.WebForms.PageRequestManager.getInstance().get_isInAsyncPostBack()) {

     // call you JavaScript function in here

    }
  }
</script>

【讨论】:

  • 有了这个,它在页面加载和回发上运行
  • 你确定js函数没有被代码的其他地方引用吗?
  • 当我在本地尝试时,它对我有用。如果它不适合您,那么您可能需要发布一些自定义页面代码和 JS 代码。
  • 我对这一切都很陌生。在页面中定义 IsPostBack 对我有用
猜你喜欢
  • 2021-12-30
  • 1970-01-01
  • 2015-03-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多