Digamos que quería cargar archivos css y js descargados internamente como una alternativa a los siguientes enlaces si CDN no funcionaba, ¿cómo lo haría?
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script> <script src="https://ajax.googleapis.com/ajax/libs/jquerymobile/1.4.5/jquery.mobile.min.js"></script> <link rel="stylesheet" href="https://ajax.googleapis.com/ajax/libs/jquerymobile/1.4.5/jquery.mobile.min.css">Una forma en la que puedo pensar es usar el controlador onerror de la etiqueta del script, que se llamará si el recurso no estaba bien cargado y después de esto, puede cargar dinámicamente/manualmente el script desde otro lugar.
setTimeout(() => { if (window.jQuery) { console.log('jQuery is loaded from other source than CDN!'); } }, 1000); // Make sure you do a better way of assuring that your script is being loaded... <script> function onCDNFailed() { console.log('CDN failed!'); // Loads from somewhere else.. const script = document.createElement('script'); script.onload = () => { console.log('script loaded!'); }; script.src = 'https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js'; document.head.append(script); } </script> <script src="https://ajax.googleapis.com/123.js" onerror="onCDNFailed()"></script>Otra forma es simplemente verificar después de la secuencia de comandos CDN si tiene el recurso que espera, y si no, puede crear una nueva secuencia de comandos con una URL diferente, algo como esto:
<script src="https://CDN/jquery.min.js"></script> <script> window.jQuery || document.write('<script src="/your/jquery"></script>'); </script>Para agregar el archivo JavaScript / CSS descargado en lugar de usar CDN, puede reemplazar su código con
<script type="text/javascript" src="./yourfilename.js"></script> for JS <link href="./yourfilename.css" rel="stylesheet"> for CSSAquí cambie el nombre de su archivo de manera apropiada con el nombre del archivo descargado. Esta es la forma adecuada si esto no funcionó, verifique con la licencia y la política de la biblioteca que está utilizando. Esto solo funcionará si ambos archivos están en el mismo directorio.