Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    appendChild nell'head, replaceChild la seconda volta

    aggiungo dinamicamente del codice javascript alla pagina, tramite pressione di un pulsante:

    document.getElementsByTagName("head")[0].appendChild(s);


    tuttavia ho necessità che il codice che aggiungo premendo la seconda volta (e che mi ritorna da una chiamata ajax) non venga aggiunto ma sostituito al primo.
    Analoga cosa per la terza quarta volta e volte successive.

    Ho pensato di mettere un id="myjs" allo script.... ma non va!

    suppongo si debba usare replaceChild ma non so come 'ricavare' il primo codice aggiunto....

    attendo vs. aiuto.

  2. #2
    Il primo codice aggiunto dovrebbe essere referenziabile con

    codice:
    document.getElementsByTagName("head")[0].firstChild;
    o, ancora meglio secondo me:

    codice:
    document.getElementsByTagName("head")[0].getElementsByTagName("tag_del_tuo_elemento")[0];

  3. #3
    ma aggiungendo un codice javascript del tipo

    <script language="text/javascript">
    bla bla
    </script>


    se ci sono nella pagina altri codici (statici) del tipo:
    <script language="text/javascript">
    bla bla
    </script>


    come faccio a matchare proprio il mio?

    qualcosa del tipo:
    <script id="myjs" language="text/javascript">
    bla bla
    </script>
    ho visto che non si puo' fare vero?

  4. #4
    In effetti la mia risposta canna completamente.
    L'appendChild te lo inserisce come ultimo elemento dentro all'elemento che inserisci, quindi fa finta che non ti abbia detto niente...

    L'id in un elemento script non è standard, quindi non so dirti se funziona. Dovresti provare, ma eviterei di usare javascript con X/HTML non standard.

    Se nell'head hai più di uno script, ma sai che è sempre il primo che vuoi andare a sostituire, allora lo puoi referenziare con:

    codice:
    document.getElementsByTagName("head")[0].getElementsByTagName("script")[0];
    Quindi, come dicevi nel primo post, lo rimpiazzi con replaceChild;

    Dovresti provare, ma facendo
    codice:
    document.getElementsByTagName("head")[0].replaceChild(nuovo_script,document.getElementsByTagName("head")[0].getElementsByTagName("script")[0]);
    il tuo script dovrebbe andare sempre al posto del primo.

    Ti consiglio di provare, perchè io parlo un po' troppo "ipotizzando" il comportamento (basandomi sulla mia esperienza), quindi non ti so dare la certezza.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.