Black Friday je tu! Využij jedinečnou příležitost a získej až 80 % znalostí navíc zdarma! Více zde
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í.
BF extended 2022

Diskuze: Ajax eval script se souborem

Aktivity
Avatar
Zbyněk Chatt:10. listopadu 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. listopadu 13:32
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:10. listopadu 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. listopadu 14:15
Avatar
Zbyněk Chatt:11. listopadu 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. listopadu 13:07
 
Nahoru Odpovědět
11. listopadu 13:05
Avatar
Zbyněk Chatt:11. listopadu 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. listopadu 13:35
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:11. listopadu 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. listopadu 13:45
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:11. listopadu 13:46

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

 
Nahoru Odpovědět
11. listopadu 13:46
Avatar
Odpovídá na Peter Mlich
Zbyněk Chatt:11. listopadu 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. listopadu 13:51
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:12. listopadu 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. listopadu 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.