none
Custom Javascript não funciona no IE, mas funciona no Chrome RRS feed

  • Pergunta

  • Olá pessoal!

    Tenho 2 situações que geram o mesmo problema, eu insiro um Custom JS através de uma webpart vi "Default New Item" no Sharepoint, onde ele deve carregar e executar o Javascript quando abrir o formulário para inserir um novo item na lista.

    O primeiro, é baseado neste artigo: http://www.justinkobel.com/post/2011/11/09/Pre-selecting-Options-from-a-Lookup-Column-on-a-SharePoint-2010-List-Form.aspx

    Eu faço o lookup, ele funciona perfeitamente selecionando o item no Google Chrome, porém no IE ele não seleciona nada.

    O Segundo é uma máscara para os campos: http://digitalbush.com/projects/masked-input-plugin/

    Onde insiro o JS do MaskedPlugin+JQuery e esse código:

    <script type="text/javascript">
     $(document).ready(function() {
     $("input[title='CEP / ZIP Code']").mask("99999-999");
     $("input[title='Telefone']").mask("(99) 9999-9999");
     });</script>

    O script funciona normalmente no Chrome, e novamente não funciona no IE.

    Em ambos os browsers, eu abro o código fonte e os Javascripts estão lá.

    Alguma ideia?

    Obrigado

    terça-feira, 19 de fevereiro de 2013 19:44

Todas as Respostas

  • No Internet Explorer, pressione a tecla F12.

    Navegue na aba Script e em seguida Console:

    Verifique se é exibida alguma mensagem de erro.

    []'s


    Tarcísio Gambin | MCP, MCT, MCTS, MCITP, ITILv3
    www.tarcisiogambin.net

    terça-feira, 19 de fevereiro de 2013 20:18
  • No segundo caso, ele apresentou erro na linha $(document).ready(function() {

    Com a mensagem: 

    SCRIPT5007: The value of the property '$' is null or undefined, not a Function object 
    NewForm.aspx, line 733 character 2

    No primeiro caso, onde eu mais tenho preocupação não apresenta nenhum erro.

    quarta-feira, 20 de fevereiro de 2013 13:11
  • Este erro pode acontecer pelos seguintes motivos:

    - Biblioteca jQuery não está referenciada;
    - Path incorreto;
    - Biblioteca referenciada após seu script;

    Inclua o seguinte código em seu script para verificar:

    if (typeof(jQuery) != 'undefined') {
        alert("jQuery "+jQuery.fn.jquery+" carregado com sucesso!");
    }else{
        alert("jQuery não carregado/ encontrado" );
    }


    Caso esteja incluindo na master page, insira-o antes do Content Place Holder "PlaceHolderAdditionalPageHead", sempre dentro da tag <head>.
    Se for diretamente na página, inclua-o dentro deste mesmo Content Place Holder que citei.

    Sobre o funcionamento exclusivo no Chrome, pode ser algum cache que esta fazendo da biblioteca.

    Apenas para fins de teste, experimente referenciar a biblioteca via CDN:

    <head>
    ...
    <script type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.8.3.js"></script>
    ...
    </head>

    []'s


    Tarcísio Gambin | MCP, MCT, MCTS, MCITP, ITILv3
    www.tarcisiogambin.net


    quarta-feira, 20 de fevereiro de 2013 14:18
  • Este erro pode acontecer pelos seguintes motivos:


    - Biblioteca jQuery não está referenciada;
    - Path incorreto;
    - Biblioteca referenciada após seu script;

    Inclua o seguinte código em seu script para verificar:

    if (typeof(jQuery) != 'undefined') {
        alert("jQuery "+jQuery.fn.jquery+" carregado com sucesso!");
    }else{
        alert("jQuery não carregado/ encontrado" );
    }


    Caso esteja incluindo na master page, insira-o antes do Content Place Holder "PlaceHolderAdditionalPageHead", sempre dentro da tag <head>.
    Se for diretamente na página, inclua-o dentro deste mesmo Content Place Holder que citei.

    Sobre o funcionamento exclusivo no Chrome, pode ser algum cache que esta fazendo da biblioteca.

    Apenas para fins de teste, experimente referenciar a biblioteca via CDN:

    <head>
    ...
    <script type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.8.3.js"></script>
    ...
    </head>

    []'s


    Tarcísio Gambin | MCP, MCT, MCTS, MCITP, ITILv3
    www.tarcisiogambin.net


    Fiz o teste que você pediu e muitos outros, a biblioteca antes realmente não era carregada, alterei, ele exibe que carregou o JQuery.
    Mas a função ainda não funciona, tanto no primeiro caso como no segundo.
    No caso do segundo que tem o JQuery ele mostra o erro no console:
    SCRIPT438: Object doesn't support property or method 'mask' 
    NewForm.aspx, line 27 character 2

    Se bem entendi, em ambos os casos, o script não foi carregado, não entendi, não faz sentido. Ele aponta para o caminho certo, no Chrome funciona, verificando o cache do IE, o arquivo .JS está lá.
    quarta-feira, 20 de fevereiro de 2013 20:44
  • Acredito que seja o mesmo problema do jQuery - o 'maskedPlugin' não está sendo carregado corretamente. Tanto que não é encontrado o método 'mask' presente neste plugin.

    Peço que por gentileza, copie nesta thread o trecho do código que está utilizando para referenciar todos esses arquivos. Pode ser que seja alguma particularidade ou sintaxe apenas compatível com o Chrome.

    Apenas como informação, onde você está inserindo estas referencias? Na master page ou diretamente na página?

    []'s


    Tarcísio Gambin | MCP, MCT, MCTS, MCITP, ITILv3
    www.tarcisiogambin.net


    quinta-feira, 21 de fevereiro de 2013 01:35
  • Victor, realmente o problema está acontecendo por que provavelmente a referência do jquery.mask não está adicionada à página (ou masterpage), o método .mask() existe dentro desse arquivo javascript.

    você pode conseguí-lo aqui: http://digitalbush.com/projects/masked-input-plugin/

    Abraços,

    _____________________________________

    Douglas Romão | MCP, MCTS, MTAC

    terça-feira, 19 de março de 2013 13:32
  • Pessoal, eu sei que já faz um tempo que postei isso... mas aconteceu com outra situação usando JQuery com o SPServices.

    O problema é que o Internet Explorer não carregava as bibliotecas, e assim não executava o código (em outras situações usando JS também).

    Não sei como e nem o motivo, mas fazendo referência dessa maneira, os códigos são executados no IE:

    Exemplo usando o SPServices, com o CascadeDropdown.

    <script language="javascript" src="/ControleEquipamentos/Arquivos/jquery-1.8.3.min.js" type="text/javascript"></script><script language="javascript" src="/ControleEquipamentos/Arquivos/jquery.SPServices-0.7.2.min.js" type="text/javascript"></script><script language="javascript" type="text/javascript">
    
    
    
    
    
    
    
    
    
    
    
    
    $(document).ready(function() {
    // Set up the cascade for Detalhes local
    	$().SPServices.SPCascadeDropdowns({
    		listName: "Equipamentos",
    		relationshipList: "{2DD23F30-4D28-43BD-8B7B-712AF514FC5A}",
    		relationshipListParentColumn: "Local",
    		relationshipListChildColumn: "Title",
    		parentColumn: "Local",
    		childColumn: "Detalhes do Local"
    	});
        });</script>

    Espero que seja útil para outras pessoas!

    Abraços


    sexta-feira, 12 de abril de 2013 16:58
  • Aparentemente no seu código está tudo certo (embora não precisamos mais utilizar a propriedade language da tag script).

    Acho estranho que este erro aconteça exclusivamente no Internet Explorer. Eu mesmo utilizo o SPServices quase que diariamente e não tive problemas específicos com browsers. Mas vamos lá!

    Novamente peço para certificar-se que os paths estejam corretos pois:

    - Ao acessar "/biblioteca/script.js", o seu browser irá acessar "http://site/BIBLIOTECA/SCRIPT.JS" (independente do nível de hierarquia que estiver navegando)

    - Ao acessar "biblioteca/script.js", o seu browser irá acessar "http://site/subsite/onde-quer-que-voce-esteja/BIBLIOTECA/SCRIPT.js" (proporcionalmente ao nível de hierarquia, ou seja, se estiver na home será carregado "http://site/biblioteca/script.js", se estiver em um subsite, será carregado "http://site/subsite/biblioteca/script.js"), e por aí vai.

    O único detalhe fica realmente pela "/" no início da propriedade src. Mas se estiver tudo bem, ok.

    Em todo caso, o que eu recomendo fazer em casos como este é:

    - Crie uma biblioteca no site root (se já não tiver) em que todos os usuários tenham do site tenham acesso de leitura.

    - Disponibilize nesta biblioteca, todos seus arquivos auxiliares, como os scripts desejados.

    - Se for utilizá-los em grande parte das páginas, referencie-os na master page, dentro da tag head.

    - E na hora de referenciá-los, procure utilizar o caminho completo com base no site root, ou seja, "/biblioteca/script-auxiliar.js".

    Para fins deste teste, sugiro que referencia a URL completa do script "http://nome-do-site/subsite/nome-da-biblioteca/meu-script.js".

    Aguardamos seu retorno!


    Tarcísio Gambin | MCP, MCT, MCTS, MCITP, ITILv3
    www.tarcisiogambin.net


    segunda-feira, 15 de abril de 2013 00:20