ExecuteOrDelayUntilScriptLoaded com sp.js quando no modo de depuração Objeto esperado

sharepoint.stackexchange https://sharepoint.stackexchange.com//questions/76370

  •  10-12-2019
  •  | 
  •  

Pergunta

Atualmente tenho um arquivo JavaScript que é carregado nas minhas páginas do SharePoint.

jQuery(document).ready(function() {
 ExecuteOrDelayUntilScriptLoaded(myfunction(), "sp.js");
});

myfunction = function(){
 /*Do something here.*/
};

Agora o JavaScript funciona perfeitamente, porém em uma página de lista, evita que a faixa de opções carregue a guia Lista.No console recebo o erro abaixo.

SCRIPT5007:Objeto esperado init.debug.js, linha 5153 Erro de caractere 5.

Mesmo se eu comentar toda a função para que fique exatamente como acima, ainda recebo a mensagem de erro.

Percebi que se eu alterar "sp.js" para "sp.debug.js" não recebo a mensagem de erro.Observando os scripts carregados na página, isso faz sentido, pois sp.debug.js é carregado e não sp.js.Eu realmente não quero colocar sp.debug.js no código javascript, pois quando ele chegar aos servidores de produção, eles não usarão sp.debug.js.Nunca percebi que isso aconteceu antes com qualquer código que tenha ExecuteOrDelayUntilScriptLoaded(jsfunction(), "sp.js").Existe uma maneira de fazê-lo funcionar em ambos os ambientes, como com uma instrução #ifdebug em javascript?Ou alguma outra ideia.

Foi útil?

Solução

Você está usando ExecuteOrDelayUntilScriptLoaded errado, você deve usar o nome da função e não executá-la.

Assim:

jQuery(document).ready(function() {
 ExecuteOrDelayUntilScriptLoaded(myfunction, "sp.js");
});

Observe que removi o "()" da minha função.Agora deve funcionar como esperado

Outras dicas

Não use jQuery para tais fins; em vez disso, use recursos incorporados do SharePoint:

var myFunction = function(){
    ExecuteOrDelayUntilScriptLoaded(yourfunction, "sp.js");
}
_spBodyOnLoadFunctionNames.push("myFunction");

ou uma função anônima

_spBodyOnLoadFunctionNames.push(function(){
    ExecuteOrDelayUntilScriptLoaded(yourfunction, "sp.js");
});
Licenciado em: CC-BY-SA com atribuição
Não afiliado a sharepoint.stackexchange
scroll top