via @jpdevries em um comentário em 1039
Falando do fallback document.write () (que eu acho que é uma regra), e quanto a isso?
O Chrome não carregará mais scripts inseridos por meio de document.write () quando a conexão com a rede for lenta
https://developers.google.com/web/updates/2016/08/removing-document-writeComo responder a isso já foi discutido?
Ainda não, mas obrigado por nos chamar a atenção para isso.
Aqui estão as partes interessantes do documento vinculado
Com esses dados em mente, a equipe do Chrome anunciou recentemente a intenção de intervir em nome de todos os usuários quando detectarmos esse padrão conhecido, alterando como document.write () é tratado no Chrome (consulte o Status do Chrome). Especificamente, o Chrome não executará o
Obrigado por abrir o problema @roblarsen. Tenho me perguntado se talvez adicionar defer
a todos os scripts incluídos resolveria isso.
Os scripts com os atributos 'async' ou 'defer' ainda serão executados.
Algo como
<script defer src="https://code.jquery.com/jquery-1.12.4.min.js"></script>
<script defer>window.jQuery || document.write('<script defer src="js/vendor/jquery-1.12.4.min.js"><\/script>')</script>
<script defer src="js/plugins.js"></script>
<script defer src="js/main.js"></script>
O
<script defer>window.jQuery || document.write('<script defer src="js/vendor/jquery-1.12.4.min.js"><\/script>')</script>
é como uma espécie de início de defer
. Parece funcionar, mas não tenho certeza se está correto.
Hm ... ou talvez os scripts jquery possam ser assíncronos e o plugin e os scripts principais adiam. É preciso ter certeza de que carregam após o jQuery, é claro.
@jpdevries Acho que reescrever o script de inclusão para usar uma interface DOM moderna (parentNode.insertBefore) como o Google Analytics usa também seria algo para se olhar.
Discussões relacionadas sobre isso que podem ajudar a tomar decisões:
@FagnerMartinsBrack Obrigado pelos links. Seu próprio tópico no reddit ajudou a esclarecer as coisas. Enquanto houver uma condição de origem cruzada, não temos nada com que nos preocupar.
Uma estratégia de adiamento é a melhor opção na minha opinião. Eu não gosto de assíncrono, para scripts que devem estar prontos o mais rápido possível como jQuery. Eu sugeri uma implementação de longo prazo no segmento WICG / intervenções ...
@jpdevries Duas coisas com seu código 'adiar':
<script>
s foi descontinuado por WHATWG. A pobre e insuficiente razão dada foi que ninguém o usou ... Verdadeira história idiota, mas infelizmente aconteceu ... Então defer
início não funcionará. :(defer
é principalmente esperar que o uso do IE10 acabe.@hexalys 😭 Tenho usado o início de adiar para coisas como CDNs de estilo h5bp com fallback local ou fazer detecção de recurso antes de incluir algo como um polyfill. Isso é uma chatice!
Fechando! Estavam a salvo!
@roblarsen oh isso é ótimo! O Chrome reverteu sua decisão? Estou curioso para saber por que estamos seguros, porque eu realmente ❤️ esse padrão
@jpdevries Ele só é acionado quando a solicitação é de origem cruzada, então estamos bem. Afinal, é um recurso local.