문제

안녕하세요, 누군가가 SherePoint 사용자 지정 게시 마스터 페이지에 앵커 태그를 추가하는 데 도움을 줄 수 있습니다.실제로 이 앵커 태그를 클릭하면 사이트 페이지를 열고 싶습니다. 이 사이트 페이지는 "페이지" 갤러리 아래의 최상위 사이트 모음에 있습니다.앵커를 넣으려고 시도했고 클릭 이벤트에서 다음과 같은 마스터 페이지의 스크립트 블록에 정의된 "OpenNewFormUrls1()" 함수를 호출했습니다.

<script type="text/javascript>" 
SP.SOD.executeOrDelayUntilScriptLoaded(OpenNewFormUrls1, 'SP.js');
function OpenNewFormUrls1() {
    var context= SP.ClientContext.get_current();
        var site=context.get_site();
context.executeQueryAsync(Function.createDelegate(this,this.onSuccess), Function.createDelegate(this, this.onFailure));
        context.load(site);
        var serverRelativeURL=site.get_serverRelativeUrl();
        ULS18u: ; 
        var options = { width: 500, height: 500 };
SP.UI.ModalDialog.commonModalDialogOpen(serverRelativeURL + "/Pages/openNew.aspx", options, null, null); 
    }
    function onSuccess(sender, args) {
        }
        function onFailure(sender, args) {
        }
</script>

이러한 변경 후에는 자바스크립트 오류가 나타나기 시작하고 앵커 태그를 처음 클릭하면 모델 대화 상자가 열리지 않는 반면, 두 번째 이후에 앵커 태그를 클릭하면 페이지가 있는 모델 대화 상자가 열립니다. 이는 새 사이트를 방문할 때마다 발생합니다. 사이트 모음.내가받는 오류 메시지는 다음과 같습니다.Message: The property or field has not been initialized. It has not been requested or the request has not been executed. It may need to be explicitly requested. URI: http://sp2010/_layouts/sp.runtime.debug.js?rev=f2An00kVlALdMLzcBc1cug%3D%3D누구든지 나를 도와줄 수 있나요? 어떻게 하면 이를 달성할 수 있나요?그리고 내가 여기서 무엇을 놓치고 있습니까?친절하게 도와주세요.

도움이 되었습니까?

해결책

달성하려는 목적을 위해 클라이언트 개체 모델을 사용할 필요는 없습니다.위 코드에서는 클라이언트 개체 모델을 사용하여 루트 사이트 URL을 가져옵니다.그러나 이는 이미 SharePoint 페이지에 javascript 변수 형태로 존재합니다.보다: http://blog.tedpattison.net/Lists/Posts/Post.aspx?ID=9

또한, 나는 당신이 executeOrDelayUntilScriptLoaded 기능.이 기능은 OpenNewFormUrls1 페이지가 로드될 때마다 작동합니다.앵커 태그를 클릭할 때만 그런 것이 아닙니다.현재 요구 사항에 대해서는 실제로 JS 클라이언트 개체 모델을 사용할 필요가 없으므로 이 기능이 필요하지 않다고 생각합니다.

따라서 모든 사항을 고려하면 스크립트 블록은 다음과 같아야 합니다.

<script type="text/javascript>" 

function OpenNewFormUrls1() {

var options = {
        url: _spPageContextInfo.siteServerRelativeUrl + "/Pages/openNew.aspx",
        width: 500,
        height: 500,
        title: "My Page",
    };
    SP.UI.ModalDialog.showModalDialog(options);
 }
</script>

그런 다음 OpenNewFormUrls1 앵커 태그의 클릭 시 작동합니다.

도움이 되었기를 바랍니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 sharepoint.stackexchange
scroll top