JS: nadien CSS en JS laden

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Hipska BE

Hipska BE

19/10/2007 15:23:00
Quote Anchor link
Hoi allen,

Ik ben bezig met een ajax script en zou willen nadat de gewone html e.d. geladen is, dat een JS functie nog wat extra JS en CSS bestanden inlaadt.

Ik heb nu momenteel al dit: maar het werkt niet echt
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
document.getElementsByTagName("head")[0].innerHTML = includes;

in includes zit html code met js en css bestanden zoals normaal in een <header> tag

Waarom ik zo iets wil,
omdat ik (vooral JS) code wil inladen die niet meteen door de eerste beste n00b kan gecopieerd worden.
Ter beveiliging van mijn code dus ;-)
 
PHP hulp

PHP hulp

25/04/2024 09:44:17
 
Jelmer -

Jelmer -

19/10/2007 15:47:00
Quote Anchor link
document.write kan niet nadat de DOM is geladen. innerHTML kan wel, maar script tags die daarin worden geplaatst worden niet uitgevoerd. Via een regex zou je die eruit kunnen vissen en door eval kunnen trekken.

Of je gaat verder programmeren in java of flash. Het is en blijft html & javascript, dat krikg je niet waterdicht.
 
Hipska BE

Hipska BE

19/10/2007 16:02:00
Quote Anchor link
dus met document.write zou het wel moeten lukken, maar dan moet het voordat de dom geladen is?
 
Pim Vernooij

Pim Vernooij

19/10/2007 16:19:00
Quote Anchor link
Niet voordat, maar tijdens dat de DOM geladen word. dus ergens in je code het volgende zetten
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<script type="text/javascript">document.write("de data die je erin wil hebben");</script>.
 
- -

- -

19/10/2007 17:18:00
Quote Anchor link
Je kan ook een nieuw element aanmaken via JavaScript, en die in de head laten zetten.

Ik heb even wat opgezocht, zoiets bijvoorbeeld:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<script type="test/javascript">
<? // voor de kleurtjes
function load()
{

    // we maken een script tag
    var scriptTag = document.createElement('script');
    // we geven wat parameters
    scriptTag.src = 'pad/naar/je/javascript.js';
    
    // we maken een link tag (voor CSS)
    var cssTag = document.createElement('link');
    // weer een handje parameters
    cssTag.rel = 'stylesheet';
    cssTag.type = 'text/css';
    cssTag.href = 'pad/naar/je/css.css';
    
    // we zoeken de head op
    var head = document.getElementsByTagName('head')[0];
    // we flanzen de script en link in de head
    scriptTag.appendChild(head);
    cssTag.appendChild(head);
}

window.onload = load;
?>

</script>

Het is niet getest, maar het zou moeten werken.
Gewijzigd op 01/01/1970 01:00:00 door - -
 
Jelmer -

Jelmer -

19/10/2007 17:39:00
Quote Anchor link
Maar dan nog kan je geen document.write in dat javascript-bestand gebruiken. Doe je dat wel, dan overschijft hij gewoon de huidige pagina.
 
- -

- -

19/10/2007 17:51:00
Quote Anchor link
Oh, ik zie net dat het niet werkt. Dit werkt wel, alleen kan je hiermee geen JS bestanden achteraf laden:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
<html>
<head>
<link rel="stylesheet" type="text/css" href="" id="csstag" />
<script type="text/javascript">
function init()
{
    css = document.getElementById('csstag');
        css.href = 'style.css';
}
window.onload = init;
</script>
</head>
</html>
 
Hipska BE

Hipska BE

20/10/2007 10:51:00
Quote Anchor link
Ik heb deze code en de ingeladen JS werkt al, maar ik vraag mij af waar Javascript met document.write zijn code zet in het document. (of waar hij het overschrijft)

voorbeeld: http://casteleyn.no-ip.info:8080/~Hipska/RPG/test.html
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>RPG Game</title>
    <link rel="stylesheet" href="graphics/style.css" type="text/css" />
    
    <script type="text/javascript" src="prototype.js"></script>
    <script type="text/javascript">
        function load(){
            new Ajax.Request( 'request.php', {parameters: {action:'load'}, onSuccess: function(ts){
                document.open();
                document.write(ts.responseText);
                document.close();
            } } );
        }
    </script>
</head>
<body onload="load()" id="window">
    <div id="field">
        <div id="content">
            Deze tekst zie je als je javascript niet aanstaat.
        </div>        
    </div>
</body>
</html>
 
Jelmer -

Jelmer -

20/10/2007 10:58:00
Quote Anchor link
De body ziet er zo uit:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
    <div id="field">
        <div id="tiles">Loading tiles ...</div>
        <div id="sprites">Loading sprites ...</div>
        <div id="mychar" class="char">Loading<br>player ...</div>
        <div id="nav">
            wow!<p>dit komt uit de JS en is dus onzichtbaar PHPhulp</p>
            <script>alert("geladen JS werkt");</script>
        </div>        
    </div>

Helaas kan ik even niet achter het hele html-document komen, ik ben vergeten hoe je document.innerHTML ook al weer deed in Safari :/

edit: alert(document.documentElement.innerHTML) levert op:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
<body id="window">
    <div id="field">
        <div id="tiles">Loading tiles ...</div>
        <div id="sprites">Loading sprites ...</div>
        <div id="mychar" class="char">Loading<br>player ...</div>
        <div id="nav">
            wow!<p>dit komt uit de JS en is dus onzichtbaar PHPhulp</p>
            <script>alert("geladen JS werkt");</script>
        </div>        
    </div>
</body>


edit 2: zo te zien is dat zo ongeveer het rauwe antwoord dat request.php oplevert.

Wat de Web Inspector van Safari & Firebug voor Firefox je niet allemaal kan leren >:)
Gewijzigd op 01/01/1970 01:00:00 door Jelmer -
 
Hipska BE

Hipska BE

20/10/2007 11:09:00
Quote Anchor link
ja ik zag al dat Fx gewoon de gegenereerde source toont

ik ga het nu gewoon gebruiken om een Javascript controle in te voegen.
dus dat JS moet aanliggen
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.