4

I'm trying to execute some JavaScript on page load on a custom page on a SharePoint site (it populates the people picker with the current user). The problem is that the code executes on postback too, which I don't want as it will reset any changes to the people picker.

I've tried using if(!IsPostBack) to no avail. Everything errors out at that point, giving

SCRIPT5009: 'IsPostBack' is undefined.

I can't find anything online to help with this. Any ideas? Thanks

user3320324
  • 109
  • 2
  • 10
  • `IsPostBack` is available in server side code, just clarifying, are you using that in `javascript`? – Arindam Nayak Nov 17 '14 at 17:22
  • Yes. But I can't get it to work – user3320324 Nov 17 '14 at 18:10
  • I mean since that is available in server side code supporting property, you can not use that in `javascript`, rather look out the answer posted., if that does not work, let me know, i will try to post answer. – Arindam Nayak Nov 17 '14 at 18:17
  • Since it's on SharePoint, I don't have access to the codebehind. A co-worker shared a bit of code they have used that checks the document referrer. That function is working for me now. Thanks for the help – user3320324 Nov 17 '14 at 18:54

3 Answers3

6

You can create a function like this:

function IsPostBack() {
    var ret = '<%= Page.IsPostBack%>' == 'True';
    return ret;
}
MrCADman
  • 99
  • 1
  • 8
  • Yes, that works - brilliant! I have been searching long and hard for a way to get my UpdatePanel content to be displayed immediately after (initial content display/) Page Load. That was fairly straightforward but the UI flickered because it was continually looping causing page loads - but no more! Thank you MrCADMan! :) – Zeek2 Oct 13 '17 at 12:10
3

You may want to try the below. Use the JavaScript pageLoad method and use the isInAsyncPostBack Property of the PageRequestManager object to determine whether it's a postback. Refer the MSDN link here for more details.

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

     // call you JavaScript function in here

    }
  }
</script>
Dennis R
  • 3,195
  • 1
  • 19
  • 24
3

IsPostBack is not a javascript variable, it's a .NET webforms variable that is only available on the server so the client will complain about it. So what to do then? I suggest this mish-mash in your control's 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 -->
welegan
  • 3,013
  • 3
  • 15
  • 20