Redirect URL to different page in SharePoint before rendering using jQuery


Ahamed Fazil Buhari
SharePoint Developer
Published On :   30 May 2018
Visit Count
Today :  3    Total :   536



Hello everyone,

In this article we will see how to redirect to different URL from SharePoint. Here we are going to redirect to different URL before anything renders on the page. In this scenario we need to redirect to different page if the user clicks or provide URL of specific SharePoint list, also we have added queryString functionality which helps admin to stay on the same page without navigation.

Consider we have list named Test in SharePoint - https://fazilbuhari.sharepoint.com/sites/demo/Lists/Test/ and if I provide this link in the browser then it should navigate to https://outlook.com without rending anything from SharePoint. And if the URL is provided as https://fazilbuhari.sharepoint.com/sites/demo/Lists/Test?admin then it will not redirect instead it will renders the actual page.

To achieve this, we updated the master page since we need to load this script before anything renders on the page. (Make sure to have backup of master page for safety J). My SharePoint site is using seattle master page.

Open the SharePoint Designer, go to Master Pages and right click on seattle.html and select ‘Edit File in Advanced Mode’

clip_image002



 <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js">
 </script>
 <script>
 //<![CDATA[
 var relativeURL = document.location.href.split("?")[0];
 var targetURL = "https://outlook.com";
 if (
   relativeURL &&
   relativeURL.search("NewForm.aspx") === -1 &&
   relativeURL.search("DispForm.aspx") === -1 &&
   relativeURL.search("EditForm.aspx") === -1
 ) {
   var listName = relativeURL.toLowerCase().split("/lists/")[1];
   if (listName) {
     listName = listName.split("/")[0];
     if (listName === "Test") {
       var queryString = document.location.href.split("?")[1];
       if (queryString) {
         var params = queryString.split("&");
         var isRedirect = true;
         for (var i = 0; i < params.length; ++i) {
           var keyValue = params[i].split("=");
           if (keyValue[0] === "admin") {
             isRedirect = false;
           }
         }
         if (isRedirect) {
           window.location.replace(targetURL);
         }
       } else {
         window.location.replace(targetURL);
       }
     }
   }
 }
 //]]>
 </script>
 


Also we are not redirecting for NewForm, EditForm and DispForm. You can update the script as per your requirement.

clip_image004

Happy Coding

Ahamed

Categories