IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: Ajax eval script se souborem

Aktivity
Avatar
Zbyněk Chatt:10.11.2022 13:32

V ajaxu potřebuju v načtené stránce spustit scripty, dělám to takto

var arr = document.getElementById(vysledek).getElementsByTagName('script')
            for (var n = 0; n < arr.length; n++){
                 eval(arr[n].innerHTML);
               }
  • to funguje

Zkusil jsem: Jenže to nespustít scripty se src, zkusil jsem takto:

var arr = document.getElementById(vysledek).getElementsByTagName('script')
            for (var n = 0; n < arr.length; n++){

                file = arr[n].getAttribute('src');

                if (file) {
                    //alert('test b');
                    fileref = document.createElement('script');
                    fileref.setAttribute('type', 'text/javascript');
                    fileref.setAttribute('src', file);
                    document.head.appendChild(fileref);
                } else {
                    eval(arr[n].innerHTML);
                }
            }

Chci docílit: Bohužel to nefunguje. Eval ano, document.head­.append nejspíš ne. Nevíte někdo prosím, co s tím? :/

 
Odpovědět
10.11.2022 13:32
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:10.11.2022 14:15

A to jsi nasel googlem nebo vymyslel sam? V google bude tak 100.000 reseni, ohledne ajaxu.

http://www.javascriptkit.com/…iptcss.shtml

function loadjscssfile(filename, filetype){
    if (filetype=="js"){ //if filename is a external JavaScript file
        var fileref=document.createElement('script')
        fileref.setAttribute("type","text/javascript")
        fileref.setAttribute("src", filename)
    }
    else if (filetype=="css"){ //if filename is an external CSS file
        var fileref=document.createElement("link")
        fileref.setAttribute("rel", "stylesheet")
        fileref.setAttribute("type", "text/css")
        fileref.setAttribute("href", filename)
    }
    if (typeof fileref!="undefined")
        document.getElementsByTagName("head")[0].appendChild(fileref)
}

loadjscssfile("myscript.js", "js") //dynamically load and add this .js file
loadjscssfile("javascript.php", "js") //dynamically load "javascript.php" as a JavaScript file
loadjscssfile("mystyle.css", "css") ////dynamically load and add this .css file
 
Nahoru Odpovědět
10.11.2022 14:15
Avatar
Zbyněk Chatt:11.11.2022 13:05

Tohle se snažím načíst

<script type="text/javascript"
               src="https://maps.google.com/maps/api/js?key=AIzaSyAytwrbiu=CENSORED=-DTHpbMYJbu66SvA"></script>

Takhle to vypadá

file = arr[n].getAttribute('src');

                if (file) {

                    fileref = document.createElement('script');
                    fileref.setAttribute('type', 'text/javascript');
                    fileref.setAttribute('src', file);
                    document.getElementsByTagName("head")[0].appendChild(fileref);
                } else {
                    eval(arr[n].innerHTML);
                }

A takhle to dopadá

Uncaught ReferenceError: google is not defined
    at eval (eval at zpracuj (scripts.js:159:21), <anonymous>:4:34)
    at zpracuj (scripts.js:159:21)
    at http_request.onreadystatechange (scripts.js:122:9)

Prostě se to (asi) neneačte?

Už nevím, kudy dál, děkuju za případnou pomoc ... :/

Editováno 11.11.2022 13:07
 
Nahoru Odpovědět
11.11.2022 13:05
Avatar
Zbyněk Chatt:11.11.2022 13:35

Co jsem ještě zkoušel, na stránce místo <script src=...> to udělat takto:

<script type="text/javascript">
        var headID = document.getElementsByTagName("head")[0];
        var newScript = document.createElement('script');
        newScript.type = 'text/javascript';
        newScript.src = 'https://maps.google.com/maps/api/js?key=AIz=CENSORED=C-G';
        headID.appendChild(newScript);
    </script>

Ale pak už to nejde nejen v ajaxu, ale při načtení stránky uplně zvlášt také ne.

 
Nahoru Odpovědět
11.11.2022 13:35
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:11.11.2022 13:45

Ajax by mel blokovat vsechny, co nenacitas s lokalniho serveru, preci.
S google nemam zkusenosti, ale takovyto zpusob nacitani muze blokovat. Zkus si to na nejakem souboru na lokalnim serveru, nejdriv.

 
Nahoru Odpovědět
11.11.2022 13:45
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:11.11.2022 13:46

Ale, jestli ti na tom nesejde, tak to vpisuj pres innerHTML do DIVu nebo do iframu.

 
Nahoru Odpovědět
11.11.2022 13:46
Avatar
Odpovídá na Peter Mlich
Zbyněk Chatt:11.11.2022 13:51

Dočasně jsem to vyřešil přes zobrazování přes frame, což je pro mě na prd, že musím data z toho tahat také napříč framy, což je trošku ojeb. Ale funguje to.

 
Nahoru Odpovědět
11.11.2022 13:51
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:12.11.2022 16:45

No, muzes tahat obsah pres php, treba, na lokalni server.

--- stahuj.php ---
<?php if (isset($_GET['url'])) echo file_get_content($_GET['url']); ?>

--- stranka.html --
<script>
... ajax('stahuj.php?url=seznam.cz', callback)
</script>

Ale, pak se s html neda rozumne pracovat. Jenom jako vypis na obrazovku. Pripadne opravit odkazum odkazy pro href, script a pod, doplnit tam puvodni domenu, pokud pouzivaji relativni cesty.

 
Nahoru Odpovědět
12.11.2022 16:45
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 8 zpráv z 8.