2017-11-21 14 views
0

기본 SharePoint 2013 문제 추적기에서 일부 맞춤 설정을 위해 JavaScript를 사용하고 있습니다. 사용자가 문제 (기본 SharePoint 기능 presave)를 제출하면 JavaScript가 문서를 새 URL로 리디렉션해야합니다. Internet Explorer에서는 Firefox에서 모든 것이 제대로 작동하지만 알 수없는 이유로 리디렉션이 Chrome에서 작동하지 않습니다.Chrome 리디렉션 (SP 모달 새 창)

위치, replace.href, 할당 등을 사용했습니다. 결과는 동일한 크롬이 리디렉션없이 양식을 저장합니다. 왜 작동하지 않는지 알려주시겠습니까?

나는 SP 2013 온라인을 사용하고 (그리고 난 SP 디자이너에 액세스 할 수없는) 나는 당신이한다고 생각

<script src="/sites/SiteAssets/Scripts/jquery.min.js" type="text/javascript"></script> 
<script type="text/javascript" src="/sites/SiteAssets/Scripts/sessvars.js"></script> 
    <script language="javascript" type="text/javascript" src="/sites/_layouts/15/clientpeoplepicker.js"></script> 
    <script type="text/javascript"> 
    // Here i have small function to get email from sharepoint peoplePicker field 
    function getEmailFromPeoplePicker(title) { 
     var ppDiv = $("div[title='" + title + "']")[0]; 
     var peoplePicker = SPClientPeoplePicker.SPClientPeoplePickerDict[ppDiv.id]; 
     var userList = peoplePicker.GetAllUserInfo(); 
     var userInfo = userList[0]; 
     var userEmail; 
     if(userInfo != null) 
     { 
      userEmail = userInfo.EntityData.Email; 
     } 
     return userEmail; 
    } 


    function PreSaveAction(){ 
     // check if there is attachment 
     if ($('#onetidIOFile').get(0).files.length === 0) { 
    } else { 
    OkAttach() //attach file to form 
    } 

    //get email from field 
    var RequestApprover = getEmailFromPeoplePicker('Assigned To'); 
    //create link for redirection with email at the end (ill use it latter for sending emails) 
    var targetUrl = '/sites/SitePages/RedirectDestination.aspx' + '#' + RequestAprover; 
    //window.location.href = targetUrl; 
    //location.replace(targetUrl); 
    //window.location.assign(targetUrl); 
    // window.top.location.href = targetUrl;   
    window.location.assign(targetUrl); // <---------- redirection which works in IE and FireFox but not in Chrome 
    //window.location.href = targetUrl; 
    //window.location.assign(targetUrl); 
    //window.parent.location.href(targetUrl); 
    //setTimeout(function(){location.href = targetUrl},500); 
    return true; 
    } 
    </script> 

답변

0

"false를 반환을;" (대신 return true;) PreSaveAction 함수 구현의 끝에. 크롬 리디렉션과 같은 모양은 다른 브라우저에서 시간이 오래 걸리므로 셰어 포인트는 일반적인 양식 흐름을 계속합니다 (예 : PreSaveItem 등 계속)

+0

Дякую 대답 : 나는 테스트 결과를 거짓으로 보았습니다. 이전과 리디렉션이 제대로 작동하지만 - 페이지를 리디렉션하기 전에 양식을 저장해야합니다. – Tehn

+0

위대한! 도움이 돼서 기쁩니다. 답변을 귀하의 문제를 해결 한 것으로 표시하는 것을 잊지 마십시오 (도움이된다면 :)). 행운을 빕니다. –

+0

일부만 작동합니다. 이제는 리디렉션 할 수 있지만 셰이프 양식은 저장되지 않았습니다 (false를 반환했기 때문에). 나는 window.open에 대해서만 크롬을 생각하지만 그것은 피하고 싶지 해결 방법입니다. – Tehn