Jump to content
holasoycael

ERRO em arquivo js deixa pagina lenta para carregar!!

Recommended Posts

Screenshot_2.png.010c48ee897be49a11d4ca0b49946d47.png

 

Olá Galera, tenho um script no meu site que ele alterar a folha css. porém, está demorando muito para carregar a pagina e ao observar vi que há alguns erros que não entendi muito bem.

function setActiveStyleSheet(title) {
  var i, a, main;
  for(i=0; (a = document.getElementsByTagName("link")[i]); i++) {
    if(a.getAttribute("rel").indexOf("style") != -1 && a.getAttribute("title")) {
      a.disabled = true;
      if(a.getAttribute("title") == title) a.disabled = false;
    }
  }
}

function getActiveStyleSheet() {
  var i, a;
  for(i=0; (a = document.getElementsByTagName("link")[i]); i++) {
    if(a.getAttribute("rel").indexOf("style") != -1 && a.getAttribute("title")
     && !a.disabled) return a.getAttribute("title");
  }
  return null;
}

function getPreferredStyleSheet() {
  var i, a;
  for(i=0; (a = document.getElementsByTagName("link")[i]); i++) {
    if(a.getAttribute("rel").indexOf("style") != -1
       && a.getAttribute("rel").indexOf("alt") == -1
       && a.getAttribute("title")
       ) return a.getAttribute("title");
  }
  return null;
}

function createCookie(name,value,days) {
  if (days) {
    var date = new Date();
    date.setTime(date.getTime()+(days*24*60*60*1000));
    var expires = "; expires="+date.toGMTString();
  }
  else expires = "";
  document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(name) {
  var nameEQ = name + "=";
  var ca = document.cookie.split(';');
  for(var i=0;i < ca.length;i++) {
    var c = ca[i];
    while (c.charAt(0)==' ') c = c.substring(1,c.length);
    if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
  }
  return null;
}

window.onload = function(e) {
  var cookie = readCookie("style");
  var title = cookie ? cookie : getPreferredStyleSheet();
  setActiveStyleSheet(title);
}

window.onunload = function(e) {
  var title = getActiveStyleSheet();
  createCookie("style", title, 365);
}

var cookie = readCookie("style");
var title = cookie ? cookie : getPreferredStyleSheet();
setActiveStyleSheet(title);

Este é o aqui jascript que esta dando erro na página.

 

HTML apresentado na página:

 

<!-- // CSS STYLE -->

<link href="https://holasoycael.github.io/style.roh.css" rel="stylesheet" type="text/css"/>
<link href="https://holasoycael.github.io/style.en.roh.css" media="all" rel="stylesheet" title="default" type="text/css"/>
<link href="https://holasoycael.github.io/style.pt.roh.css" media="all" rel="stylesheet" title="pt" type="text/css"/>
<link href="https://holasoycael.github.io/style.es.roh.css" media="all" rel="stylesheet" title="es" type="text/css"/>

<!-- // URL SELECT CSS STYLE -->

<a href="javascript:void(0);" onclick="setActiveStyleSheet('default'); return false;"><strong>English</strong></a>
<a href="javascript:void(0);" onclick="setActiveStyleSheet('es'); return false;"><strong>Español</strong></a>
<a href="javascript:void(0);" onclick="setActiveStyleSheet('pt'); return false;"><strong>Português</strong></a>

Me ajude por favor!

Share this post


Link to post
Share on other sites

Eu trago a solução!! Depois de pesquisar em sites em inglês  sobre o assunto.

Os erros foram corridos. antigamente demorava em alguns mobile quase 1min dependendo para carregar a página. 

Screenshot_3.png.d734aecd3ed840183dc1bd7d9b4977b4.png

 

Na foto abaixo diz que há um problema nas linhas 4, 55, 65 do arquivo JS (active.style.roh.js)
Screenshot_2.png.e311ff5f6aef011d5601699b7c924948.png

 

no site em inglês diz "

A solução para corrigir o Uncaught TypeError: Cannot read property 'indexOf' of undefined

Existe uma correção realmente simples para esse erro de JS! Tudo o que você precisa fazer é verificar se essa variável está definida e, em caso afirmativo, executar o código. Portanto, o código ficará assim:

if (myVar) {

if(myVar.indexOf("something_here")<0) {

a lot of code here...

}

}

Aponta o site: https://www.zeninvader.com/fix-indexof-undefined/

Para solucionar o problema com o javascript fiz a minima alteração.

function setActiveStyleSheet(title) {
  var i, a, main;
  for(i=0; (a = document.getElementsByTagName("link")[i]); i++) {
    if(a.getAttribute("rel").indexOf("style") != -1 && a.getAttribute("title")) {
      a.disabled = true;
      if(a.getAttribute("title") == title) a.disabled = false;
    }
  }
}

function getActiveStyleSheet() {
  var i, a;
  for(i=0; (a = document.getElementsByTagName("link")[i]); i++) {
    if(a.getAttribute("rel").indexOf("style") != -1 && a.getAttribute("title")
     && !a.disabled) return a.getAttribute("title");
  }
  return null;
}

function getPreferredStyleSheet() {
  var i, a;
  for(i=0; (a = document.getElementsByTagName("link")[i]); i++) {
    if(a.getAttribute("rel").indexOf("style") != -1
       && a.getAttribute("rel").indexOf("alt") == -1
       && a.getAttribute("title")
       ) return a.getAttribute("title");
  }
  return null;
}

function createCookie(name,value,days) {
  if (days) {
    var date = new Date();
    date.setTime(date.getTime()+(days*24*60*60*1000));
    var expires = "; expires="+date.toGMTString();
  }
  else expires = "";
  document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(name) {
  var nameEQ = name + "=";
  var ca = document.cookie.split(';');
  for(var i=0;i < ca.length;i++) {
    var c = ca[i];
    while (c.charAt(0)==' ') c = c.substring(1,c.length);
    if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
  }
  return null;


window.onload = function(e) {
  var cookie = readCookie("style");
  var title = cookie ? cookie : getPreferredStyleSheet();
  setActiveStyleSheet(title);
}

window.onunload = function(e) {
  var title = getActiveStyleSheet();
  createCookie("style", title, 365);
}

var cookie = readCookie("style");
var title = cookie ? cookie : getPreferredStyleSheet();
setActiveStyleSheet(title);

}

A chave que se encontrava na linha 50 fechando function readCookie(name) { , alterei sua posição envolvendo todos abaixo deixando na linha 65(última linha) e solucionou meus problemas.

 

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By Febatera7
      Preciso construir um microsserviço, apenas no lado do servidor (Node.js) que leia menções e comentários em postagens em que o @ do meu cliente foi marcado, em seguida, salve essas mensagens em nosso banco de dados, para especialistas de atendimento para responderem mais tarde.
      Este microsserviço também deve ser capaz de ler e salvar as fotos destas postagens e comentários.
      Para Node.js, vi que não há SDK, então procurei os terceiros que o próprio Facebook indica, mas não encontrei nada sobre ler e responder a menções e comentários em postagens.
      Tentei utilizar as bibliotecas fb e fbgraph, mas nenhuma delas me dá as opções para ler postagens em que fui marcado, apenas as do meu próprio feed.
      Alguém pode me ajudar? Por onde posso começar? Há alguma outra biblioteca que consiga utilizar?
    • By Sapinn
      Fala galera, tudo blz? Então estou com uma dúvida um pouco boba mas que não consegui resolver o problema ainda. Estou desenvolvendo um site para agendamento de serviços e resolvi fazer a pagina principal como uma dashboard (área de administrador) onde seria muito mais fácil para o usuário registrar os serviços entre outras coisas, enfim, estou com um problema quanto ao layout da página. Normalmente o dashboard tem um menu à esquerda e o conteúdo  fica à direita quando ocorre o clique no botão hambúrguer( Aquele que tem três tracinhos) esse menu é recolhido e esse conteúdo que fica a direita fica centralizado, às vezes, em muitos dashboard esse menu só é um pouco recolhido ficando amostra apenas os ícones enquanto o conteúdo da direita fica um pouco mais centralizado. A pergunta é como eu posso fazer isso? Outra coisa, na responsividade quando a página diminui o menu da uma retraída e o conteúdo fica centralizado quando é clicado no botão hambúrguer o menu não afasta o conteúdo de volta e sim fica por cima desse conteúdo. Não sei como fazer isso, eu estou melhorando quando ao desenvolvimento front-end mas ainda não é muito a minha praia. Eu tentei fazer isso com css grid (que por sinal é algo que eu não tenho tanta pratica, já que eu sou melhor com flebox) mas não funcionou e o código só ficou ruim e confuso. Se alguém puder me ajudar ficaria muito grato
       
      Não tem muito coisa ainda mas irei disponibilizar o código que desenvolvi até agora:
       
      <!DOCTYPE html> <html lang="pt-br"> <head>     <meta charset="UTF-8">     <meta http-equiv="X-UA-Compatible" content="IE=edge">     <meta name="viewport" content="width=device-width, initial-scale=1.0">     <title>Sistema de Gerenciamento</title>     <link rel="stylesheet" href="assets/css/style.css">     <link rel="icon" href="assets/images/icone-logo.png">     <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.4.1/font/bootstrap-icons.css"> </head> <body>     <header>         <div class="bar-header">             <i class="bi bi-list"></i>         </div>     </header>     <nav class="menu">         <div class="user">             <i class="bi bi-person-circle"></i>             <p>Nome do Usuário</p>         </div>         <ul>             <li class="active"><a href=""><i class="bi bi-house-fill"></i> Inicio</a></li>             <li><a href=""><i class="bi bi-calendar-plus-fill"> </i>Adicionar Serviço</a></li>             <li><a href=""><i class="bi bi-person-plus-fill"></i> Adicionar Admin</a></li>             <li><a href=""><i class="bi bi-file-earmark-post-fill"></i> Configurações de Nota</a></li>             <li><a href=""><i class="bi bi-file-person"></i> Configurações da Conta</a></li>             <li><a href=""><i class="bi bi-box-arrow-right"></i> Sair</a></li>         </ul>     </nav>     <main></main>     <footer></footer> </body> </html>  
       
      *{     padding: 0;     margin: 0; } body{     font-family: Arial, Helvetica, sans-serif;     background-color: #e5e5e5; } .bar-header{     background-color: #4285f4;     position: fixed;     color: #fff;     width: 100%;     height: 40px;     font-size: 37px;     padding: 8px 16px;     z-index: 1; } .menu{     background-color: #26353e;     width: 260px;     height: 100vh;     position: fixed;     padding-top: 65px; } .menu ul li{     list-style: none;     padding: 15px;     cursor: pointer;     border-bottom: 1px solid #26353e; } .menu ul li:hover{     background-color: #4285f4;      } .menu li a{     color: #fff;     font-size: 18px;     text-decoration: none;     } .menu i{     font-size: 27px; } .menu .active{     background-color: #4285f4; } .user{     margin-left: 50px;     padding-bottom:10px ; } .user i{     font-size: 120px;     color: #4285f4; } .user p{     font-weight: bold;     font-size: 18px;     color: #fff; }
       
    • By acneto.frc
      Boa noite a todos.
      Uso Nodejs + express + Mysql
      O retorno abaixo é de retorno da Model quando consultado um registro :id
      Preciso extrair para duas variáveis diferentes a chave  e o valor de um objeto javascripr.
       
      RowDataPacket {
        liv_codigo: 5,
        liv_titulo: 'Guia Mangá - Microprocessadores',
        liv_edicao: '1ª Edição',
        liv_isbn: '987-321',
        liv_ano: 2016,
        aut_codigo: 2,
        edt_codigo: 3,
        liv_ativoinativo: 'A'
      }
       
      Este retorno é resultado da uma consulta SQL  de um registro (:id) na tabela
      Preciso armazenar em arrays diferentes a chave e o valor.
       
      Abraços e obrigado.
       
       
       
    • By Sherlock02
      Olá, Eu preciso criar um menu com dois níveis utilizando Javascript.
      O código está assim:
      <div id="menu">     <ul>        <li>Item 1</li>        <li>Item 2</li>        <li>Item 3</li>        <li>Item 4</li>     </ul> </div>
      Eu preciso transformá-lo em um segundo nível e inserir texto no estilo "Parent 1" no primeiro nível, dessa maneira:
      <div id="menu">     <ul>        <li>Parent 1          <ul class="sub-menu">           <li>Item 1</li>           <li>Item 2</li>           <li>Item 3</li>           <li>Item 4</li>          </ul>     </li>     </ul> </div>  
    • By alex_C1
      1. Para que pagar uma cartoamante para prever o seu futuro? Crie uma função chamada cartoamante que receberá quatro argumentos: número de filhos, nome da esposa ou matido, cidade e função. O retorno da função será: Você ocupará a função X na cidade de Y, vai se casar com Z e terá N filhos. Chame a função passando os quatro parâmetro e imprima o resultado no log. Crie a função no modo tradicional.

      2. Transforme a função anterior em uma arrow function e ajuste o que for necessário no programa.

      Obs: estou precisando dessa parte para terminar meu trabalho da faculdade.
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.