Svelte external file load ready

//document.js
export function loadScript(src,myid) {
    return new Promise((resolve, reject) => {

        const elements = document.getElementsByClassName(myid+"mysveltescriptid");
        while(elements.length > 0){
            elements[0].parentNode.removeChild(elements[0]);
        }

        const script = document.createElement('script');
        script.src = src;
        script.classList.add(myid+"mysveltescriptid");
 
        document.body.appendChild(script);
 
        script.addEventListener('load', () => resolve(script));
        script.addEventListener('error', () => reject(script));
    });
}
<script>
    import { onMount } from "svelte";
    import { loadScript } from "./../document.js";
      onMount(async () => {
        await loadScript(
            "https://code.jquery.com/jquery-3.7.0.js",
            "jquery-3.7.0.js"
        );
        await loadScript(
            "https://cdn.datatables.net/1.13.6/js/jquery.dataTables.min.js",
            "jquery.dataTables.min.js"
        );
   

        let checkload = setInterval(() => {
            if (window.jQuery && window.DataTable) {
                 console.log("script loaded successfully!");
                new DataTable("#example");
                clearInterval(checkload);
            }
        }, 1000);
    });
</script>

Posted

in

by

Tags:

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *