drupal_add_js

11 contenuti / 0 new
Ultimo contenuto
drupal_add_js

Quote:
Salve,
utilizzo drupal 6.17 e devo inserire un funzione javascript che mi fa "lampeggiare" un testo.
Ho letto alcuni forum e ho deciso di utilizzare drupal_add_js.
Quindi ho creato il mio file testolamp.js sotto "/themes/garland" con il seguente contenuto:

function colore1(){
codice='TESTO 2'
if(document.all)
{
document.all('testo').innerHTML=codice;
}
else if(document.getElementById){
document.getElementById("testo").innerHTML = codice
}
attesa = window.setTimeout("colore2()",500);
}
function colore2(){
codice1='TESTO 2'
if(document.all)
{
document.all('testo').innerHTML=codice;
}
else if(document.getElementById){
document.getElementById("testo").innerHTML =codice
}
attesa = window.setTimeout("colore1()",500)
}

function avvia()
{
attesa = window.setTimeout("colore1()",100);
}

.....e da un blocco con filter php ho chiamato la funzione:

<?php
drupal_add_js
('/themes/garland/testolamp.js', 'avvia');
?>

TESTO LAMPEGGIANTE

MA NON FUNZIONA !!!
HELP !
GRAZIE :)

naturalmente con l'elemento
span id="testo">TESTO LAMPEGGIANTEspan

Puoi includere i js anche aggiungendo le istruzioni nel file info del tema. Es metti il js dentra una cartella chiamata appunto js del tema che usi ed aggiungi nel file info:

scripts[] = js/testolamp.js

Pulisci la cache del tema ed fai le altre operazioni necessarie per avere i testi che ti interessano lampeggianti.

krima wrote:
Puoi includere i js anche aggiungendo le istruzioni nel file info del tema. Es metti il js dentra una cartella chiamata appunto js del tema che usi ed aggiungi nel file info:

scripts[] = js/testolamp.js

Pulisci la cache del tema ed fai le altre operazioni necessarie per avere i testi che ti interessano lampeggianti.

Ho inserito il file testolamp.js in una cartella js sotto /themes/garland ed ho inserito

scripts[] = js/testolamp.js

nel file garland.info e quindi
<?php
drupal_add_js
('/themes/garland/js/testolamp.js', 'avvia');
?>
<span id="testo"><b><font color="red">TESTO</font></b></span>

nel mio blocco ma ancora niente
:(

Blink! Pensavo sepolto per sempre...
Se stai usando un sottotema, spiegato qui: http://www.drupalitalia.org/node/11188 c'è un pezzetino di codice jQuery per ricreare il famigerato blink: http://www.antiyes.com/jquery-blink-plugin

Nel file Javascript (drupalitalia.js nel doc), aggiungi questo:

/* Taken from http://www.antiyes.com/jquery-blink-plugin */
(function($)
{
  $.fn.blink = function(options)
  {
    var defaults = { delay:500 };
    var options = $.extend(defaults, options);
    return this.each(function()
    {
      var obj = $(this);
      setInterval(function()
      {
        if($(obj).css("visibility") == "visible")
        {
          $(obj).css('visibility','hidden');
        }
        else
        {
          $(obj).css('visibility','visible');
        }
      }, options.delay);
    });
  }
}(jQuery))
Drupal.behaviors.blink = function (context) {
  $('.blink').blink(500); // 500ms spento, 500ms accesso...
};

Adesso se 'avvolgi' il testo con un span con la classe 'blink', lampeggerà, esempio:
<p>Anche se non mi piace, <span class="blink">questo testo lampeggia</span>, ma questo testo no</p>

P.S. Ti suggerisco di non esagerare nel uso di questo codice, non solo per l'estetica, ma anche perchè poco efficiente. Va bene uno a cinque span per pagina, non andare molto oltre... Non lampeggiare troppo velocemente, altrimenti mandi il CPU a 100%... 500ms va bene.

Più imparo, più dubito.

Quindi se ho capito bene non utilizzo più drupal_add_js ???
Io uso garland e non sottotemi quindi in garland.info lascio scripts[] = js/testolamp.js
nel file testolamp.js inserisco

<script type="text/javascript" language="javascript">
/* Taken from http://www.antiyes.com/jquery-blink-plugin  */
(function($)
{
$.fn.blink = function(options)
{
var defaults = { delay:500 };
var options = $.extend(defaults, options);
return this.each(function()
{
var obj = $(this);
setInterval(function()
{
if($(obj).css("visibility") == "visible")
{
$(obj).css('visibility','hidden');
}
else
{
$(obj).css('visibility','visible');
}
}, options.delay);
});
}
}(jQuery))
Drupal.behaviors.blink = function (context) {
  $('.blink').blink(500);
};
</script>

e nel blocco <p>Anche se non mi piace, <span class="blink">questo testo lampeggia</span>, ma questo testo no</p>

Giusto ????

Quasi. Non devi mettere markup HTML nel file JavaScript (leva il <script> e </script> - prima e ultima riga).

Più imparo, più dubito.

Quasi,

Quote:

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

e

Quote:

< / script >

non devi metterli.

Funziona !!!
Non avevo dubbi anche se il tuo dubbio non fa che aumentare !!
:)

A dire la verità anche se conosco un pò di javascript ed ho compreso abbastanza il codice che mi hai mandato con la generazione della classe blink, ho trovato della sintassi tipo "function($)" che non mi è molto familiare e non capisco se fa parte di drupal o meno..come del resto il fatto di levare i tag javascript che vengono già interpretati..
Intanto ancora grazie

Grazie anche a te Krima!
Sempre disponibile

marco.latina wrote:
...A dire la verità anche se conosco un pò di javascript ed ho compreso abbastanza il codice che mi hai mandato con la generazione della classe blink, ho trovato della sintassi tipo "function($)" che non mi è molto familiare e non capisco se fa parte di drupal o meno..come del resto il fatto di levare i tag javascript che vengono già interpretati..
Intanto ancora grazie

La sintasse è JavaScript puro. Sta semplicemente aggiungendo una funzione a jQuery (l'oggetto) sensa lasciare traccia nel global namespace. Si protrebbe scrivere:

function addBlinkToJQuery($) {
  ...
};
addBlinkToJQuery(jQuery);

Ma questo lasciarebbe l'inutile funzione addBlinkToJQuery disponibile a tutti. Ma come fai ad eseguire una funzione anonimo? Usando le parentesi:
(function($) { ... }(jQuery));

Quindi:
1: Apertura espressione (
2: definizione della funzione function($) { ... }
3. Definizione del parametro per la funzione anonimo definito in 2 (jQuery)
4. Chiusura espressione );
A questo punto l'espressione nelle parentesi 1 e 4 viene eseguito e si aggiunge la funzione blink() al oggetto jQuery

Per quanto riguarda l'elemento <script>, beh, elementi vanno nel documento HTML, non fa parte del sintasse JavaScript. Come non metti <style> nei file .css, n'est pas?

Più imparo, più dubito.