카테고리 아카이브: 자바 스크립트

HTTP 406 SharePoint 나머지 엔드 포인트에 대 한 각도 $http.get을 사용 하 여 오류

업데이트: 정보의 훌륭한 조각이 지적 마크 광고 ndersson: http://blogs.office.com/2014/08/13/json-light-support-rest-sharepoint-api-released/. 그 많은 것을 설명합니다 :).

블로그 게시물의 가장 나쁜 제목도 있을 수 있습니다.! 어쨋든.

일반적으로 모든 O365 인스턴스에 대해 내 프로토타이핑을. 나는 내 개인 인스턴스를 다른 사람에 영향을 걱정 하지 않아도. 여담-기억 때 우리 전화 모스-와 우리의 노트북에 가상 컴퓨터 주위 실행 SQL Server, IIS, 하이퍼-V 대 결정. Vm 웨어? 어쨋든...

가이 환경에서 각을 사용 하 여 응용 프로그램을 개발 했다, 다른 것 들 중, 이:

$http.get(serverUrl)
.성공(함수(데이터, 상태, 헤더, 구성) {

var getLinksResponse = 데이터;

getLinksResponse.value.forEach(함수(theResult) {

// 에 고 그래서 거품

이 두 개의 서로 다른 SharePoint 온라인 환경에서 잘 작동 했다. 그러나, 언제 내 동료 Cloudshare 인스턴스를 포팅, 가 지 고 있는 HTTP 406 오류 (처음으로 내가 하나를가지고 했다, 그래서... 야 호, 추측하건데). 우리 연구의 조금 않았고 "수락" 헤더에서은. SharePoint 온라인 완벽 하 게 행복 했다:

수락: 응용 프로그램/json

Cloudshare 인스턴스 하지만 (프 렘에 SP입니다, 가상 서버에서 호스팅) 클래식을 싶 었 어 요 "odata verbose =" 뿐만 아니라에 추가:

수락: 응용 프로그램/json;odata 자세한 정보 표시 =

수정, 우리는 같은 헤더를 추가:

var 구성 = {헤더: {
' 수락 ': ' 응용 프로그램/json;odata verbose ='
}
};

$http.get(serverUrl,구성)
.성공(함수(데이터, 상태, 헤더, 구성) {

var getLinksResponse = 데이터;

getLinksResponse.value.forEach(함수(theResult) {

// 에 고 그래서 거품

그의 제거를 406, 하지만 그것은 또한 응답의 형식 변경. 그것은 더... 자세한. (하 하!) 더 많은 변화가 필요 했다 그리고 여기에 최종 결과:

var 구성 = {헤더: {
' 수락 ': ' 응용 프로그램/json;odata verbose ='
}
};

$http.get(serverUrl,구성)
.성공(함수(데이터, 상태, 헤더, 구성) {

var getLinksResponse = 데이터;

getLinksResponse.d.results.forEach(함수(theResult) {

// 에 고 그래서 거품

이 뀌는 30 우리를 위해 분 문제, 그래서 우리가 운이. 바라 건 대 누군가가 발견이 유용한.

</끝>

IE9에서 부트스트랩 하 모 난 실패

내가 노는와 Angular.js 마지막 오래 동안 고 내 인생에 대 한, 난 IE9 출시 내 모 난 애플 리 케이 션을 가져올 수 없습니다.  그들은 모두 IE11에서 잘 작동 하지만 중괄호와 비슷한 비트 IE9 그냥 보여.

주위를 수 색 하 고 누구 든 지 그 문제에 대해 불평을 찾을 수 없습니다.  크롬에서 잘 작동 했다, IE11, 그냥 IE9.

사실 IE 콘솔은 주는 날이 같은 오류에 의해 던져졌다:

SEC7111: HTTPS 보안 res에 의해 훼손://ieframe.dll/forbidframing.htm

그 오류는 각도 다운로드 몇 가지 문제가 또는 다른 라이브러리를 필요 생각 했다.  그것은 밝혀로 서, 이것이 문제.

인터넷 돌아다 여, 문구를 검색 하는 데 필요한 "부트스트랩" 이었다 그리고 그것은 실패 했다는 부트스트랩 처럼 보였다 마지막으로 밖으로 발견.  끝에서, 내 문제는 내가 장식 했다 내 <html> ng-애플 리 케이 션 특성으로 태그, 마찬가지로:

<html ng-애플 리 케이 션 "MatrixApp" =>

음, IE9에 대 한 작동 하지 않았다.  대신, HTML의 모든 나머지를 감 쌌 다는 <바디> 내부 div 및 참조 MatrixApp 그런 식으로.

문제 해결.

바라 건 대이 사람 어떤 슬픔 저장.

</끝>

성장 인식 / 자바 스크립트 프레임 워크의 도입

내 동료, Javed 안 사 (http://www.bigapplesharepoint.com/team?showExpertName=Javed%20Ansari&rsource=pgblog), 그가 좋아하는 또는 적어도 사용 하 고 함께 sharepoint는 프레임 워크에 짧은 요약 블로그 게시물을 썼습니다.: http://www.bigapplesharepoint.com/pages/View-An-Insight.aspx?BlogID=53&rsource=PGBlog).

jQuery 필드에 승리자를 것으로 보인다, 말하자면, 세월에 대 한, 하지만 다른 더 새로운 있으며 스틸 그것을 진압의 정렬, 각 처럼. (SPServices, 물론, 계속 그래서 내가 생각 하 고 년 동안 생명의은 인).

사람들이 사용 하는 무엇? 그들은 마이크로 소프트의 툴 링에 더 집중 된다 (CSOM / JSOM) 각 방향으로 더 이동 또는, 녹아웃, 엠 버, 등?

이러한 타사 프레임 워크 쪽으로 성장 하 고 있는 편견을가지고. MSFT 물건은 더 함께 작동 하도록 어렵게 생각, 거의 만큼 옛날 스타일 서버 사이드 개발으로 학습 곡선을 필요로.

코멘트를 여기에서 위로 빅 애플 SharePoint 토론 하 고 싶은 경우 (빅 애플 좋은 토론의 더 많은 가능성을가지고 것입니다.).

</끝>

SharePoint 빠른 실행에서 상대 Url 성가신 문제를 극복

빠른 실행 탐색 다른 하루에 링크를 추가 하 고 싶었다 고 SharePoint:

image

그의 순수 텍스트 버전은:

URL은 유효 하 고 유효한 문자 중 하 나와 함께 시작 (숫자 기호 (#) 또는 슬래시 (/)) 또는 유효한 지원 되는 프로토콜 (예를 들어, ' http://’, ' https://’, ' 파일://’, ' ftp://’, ' mailto:’, ' 뉴스:’).

"Blech 그리고 수 두!"나는 말했다.

이 해결 방법은 JavaScript를 사용 하 여 빠른 실행에 알려진된 링크를 찾아서 해당 동작을 재정의 하는 것입니다..

이것을 테스트 하려면, thusly 테스트 사이트에 새 링크를 추가:

image

내가 jQuery를 사용. 그것을 해결 하기 위해, 일부 자바 스크립트와 당신의 마음에 드는 기술을 사용 하 여 페이지에 jQuery 같은 코드 줄:

 

$(문서).준비( 함수 () {

    $("는:포함(' 테스트할 URL 교체 ')").클릭 하십시오.(함수 () { 경고("변경된 클릭 동작!"); 반환 false;});

});

그리고 밥의 삼촌.

JQuery 선택기 발견 모든 <는> 이름에 "테스트 URL 대체" 태그. 당신은 찾기-조정 하는 링크와 같은 따라 할 수 있습니다..

.click(함수() 뭐 든 SharePoint 했을 것 이다 때 사용자가 클릭 한 재정의. 당신이 "false를 반환" 그렇지 않으면 그것은 것입니다 당신의 물건을 하려고 href 것 너무 다는 것을 확인합니다, 거의 확실 하지 귀하의 목표.

이것은 행 해졌다 고 SharePoint 온라인 환경에서 테스트 해야 하지만 잘에서 작동 2010 이전 버전도.

</끝>

undefined내 블로그를 구독.

에 지 저 귐에 나를 따르라합니다 http://www.twitter.com/pagalvin

불 쌍 한 남자의 자바 스크립트 캐싱

[TL;박사 버전: 쿠키를 사용 하 여 비동기 호출의 결과 저장; 즉시 과거 비동기 호출의 결과 렌더링 하 고 페이지 로드 후 확인.]

내가 일하고 SharePoint 인트라넷 사이트에 있는 클라이언트에 대 한 기능, 다른 것 들 중, 양식에 일치 시키는 보조 탐색 해당 메뉴 옵션이 일반 오래 된 사용자 지정 목록을 통해 관리 됩니다.  아이디어는 클라이언트에 영향을 미치는 또는 그것에 의해 밖으로 넣어 전역 탐색에 의해 영향을 받지 않고 "그들 의" 사이트의 메뉴 제어를 가져옵니다..

(뭔가 엄청나게을 로드 일부 CSS와 JS... 사이트의 동작에 대 한 거의 모든 것을 근본적으로 변경 하지만 그건 다른 게시물에 대 한 HTML 파일을 가리키는 CEWP 추가 대 한 파괴)

이 아주 간단한 코드:

아픈 자리 여기는 누구 든 지 사이트의 페이지 중 하나를 조회 수 모든 시간, 해당 사용자의 웹 브라우저 목록에서 항목을 가져올 밖으로 도달 합니다.  개발 완료 되 고 테스트 되 면 안정적이 고 완전 한 것을 입증 했다, 이 호출이 필요 하지 않습니다 더 이상 99% 거의 메뉴부터 시간 변경합니다.  그것도 이상한 UI에 영향을 미칠 하이퍼 ajaxy 웹 사이트의이 용감한 새로운 세계에 있는 일반적인-페이지 렌더링 하 고 그런 다음 메뉴 렌더링지 않습니다.  그것은 과민 하 고 내 보기에 산만 한입니다.  그리고 신경 과민. 그래서, 캐싱. 

Thusly 논리를 수정:

  • 마지막 그것을 읽고 메뉴를 포함 하는 브라우저에서 쿠키에 대 한 보고
    • 만약 발견, 즉시 렌더링 합니다.  페이지 로딩 완료를 기다리지 않는다.  (당신의 HTML 여기 전략적으로 배치 되도록 해야, 그것은 일을 열심히 하지만).
  • 로딩을 끝내 고 나머지 또는 lists.asmx 또는 무엇이 든을 사용 하 여 목록에서 메뉴 항목을 로드 하려면 호출 하는 비동기 페이지에 대 한 대기
  • 내가 쿠키에 대 한 비교
    • 일치 하는 경우, 중지
    • 그렇지 않으면, jQuery를 사용 하 여, 경우 동적으로 무리를 채울 <리>에 <ul>
  • CSS를 사용 하 여 모든 서식 할 수
  • 이익!

당신의 일부는 말 거 야, "이 봐! 아니 진짜 캐싱가 여기에 있기 때문에 어쨌든 메뉴를 읽고 있다 매 시간.”  그리고 당신 말이 맞아-하지 휴식의 어떤 서버를 주는 거 야.  하지만 HTML 페이로드 완전히 렌더링 호출은 비동기 이며 이후 페이지의 초기 발생 하기 때문에, 그것은 "느낌"는 사용자에 게 응답성.  메뉴는 페이지 그리는 만큼 꽤 렌더링 합니다.  메뉴 변화를 발생 하는 경우, 사용자 메뉴의 과민 다시 그릴을 복종 된다, 하지만 그 한 번만.

이 캐싱 보다 효과적으로 만들기 하는 동시에 서버 도와 몇 가지:

  • "쿠키 캐시"는 최소 유효 규칙에 24 시간 또는 다른 시간대. 만큼 만료 된 쿠키가, 쿠키의 메뉴 스냅숏을 사용 하 고 결코 서버.

그 게 지금 당장 마음에와 서 다 음... :). 

누구 든 지 여기 어떤 영리한 아이디어를 가진다면 그들을 알고 싶어요.

그리고 마지막으로-이 기술은 다른 것 들에 대 한 사용할 수 있습니다.  이 클라이언트의이 페이지는 다양 한 페이지에 다양 한 데이터 기반 것 들, 그들 중 많은 사람들이 상대적으로 거의 변화 (일주일에 한 번 또는 한 달에 한 번).  기능의 특정 영역을 대상 하는 경우, 로컬 쿠키 저장소에서 콘텐츠를 당기 및 즉시 렌더링 응답성 UI를 제공할 수 있습니다.  그것은 어떤 주기 서버 저장 하지 하는 경우에 사용자에 게 더 빨리 느낀다.  당신은 수 있습니다. 이 로컬 쿠키 캐시를 무효화할 일부 조건과 트리거에 결정 하 여 서버 사이클을 저장 합니다.  그건 모든 상황이 복잡 한 물건 및 진짜로 가장 재미 있는 :). 

</끝>

undefined내 블로그를 구독.

에 지 저 귐에 나를 따르라합니다 http://www.twitter.com/pagalvin