0

간단한 정적 웹 파트를 만들어야합니다. 유일한 동적 부분은 현재 사용자 로그인 이름입니다 (링크의 URL 매개 변수에 포함되어야 함).SharePoint 2007의 클라이언트 측에서 현재 사용자 이름을 얻으십시오.

배포해야 할 사용자 지정 웹 파트 대신 콘텐츠 편집기 웹 파트를 사용하고 싶습니다. 실제로 JavaScript와 ActiveX를 사용하여 이미 수행했습니다. (WScript.Shell - 전체 코드)

더 좋은 방법은 없습니까? 내가 ActiveX 방식에 대해 좋아하지 않는 점은 IE의 자유로운 구성이 필요하다는 것입니다. 보안 설정에서 ActiveX와 관련된 모든 것을 활성화 할 때도 클릭 할 필요가있는 프롬프트가 있습니다. 크로스 브라우저 지원은 중요한 문제가 아니며 인트라넷이지만 좋은 추가 기능입니다.

내가 생각할 수있는 한 가지 방법은 jQuery (또는 자바 스크립트)를 사용하여 오른쪽 상단 모서리에서 사용자 이름을 긁어내는 것입니다. 그러나 더 깨끗한 것도 있습니다. 아니면 누군가가 이미 스크래핑을 수행하고 나에게 ;-)

여기 내 현재 솔루션의 시간을 절약 할 수있는 코드를 공유 할 수 있습니다

<script language="javascript"> 
    function GetUserName() 
    { 
     var wshell = new ActiveXObject("WScript.Shell"); 
     var username = wshell.ExpandEnvironmentStrings("%USERNAME%"); 

     var link = document.getElementById('linkId'); 
     link.href = link.href + username.toUpperCase(); 
    } 
</script> 
<P align=center> 
    <a id="linkId" onclick="GetUserName();" href="<my_target_URL>?UserID=">open username-based URL</a> 
</P> 

답변

2

는 콘텐츠 편집기 웹 파트에이 Web part token 포함 :

_LogonUser_ 

그것은 숨겨진 기간에 포함하기 전에이 작업을 완료 한에서 Request.ServerVariables와 같은 값 ("LOGON_USER")

를 출력 그리고 innertext를 얻기 위해 일반 old document.getElementById.

0

내 결론은 (그렇게 더 좋은 방법이 없다는 것입니다 또한 충분히 쉽다).

페이지의 출처를 확인했는데 사용자 이름이 어디에도 없으므로 JavaScript/jQuery에서 스크랩 할 수 없습니다. 브라우저는 요청과 함께 (로컬 IP 및 기타 클라이언트 관련 정보 에서처럼) 전송하지 않으므로 헤더에서 가져올 수도 없습니다. 제가 생각할 수있는 유일한 다른 접근법은 클라이언트 측에서 웹 서비스를 호출하는 것입니다. 이것은 내 시나리오에서 과도 할 것입니다.