Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Inserire uno script in altro script

550 views
Skip to first unread message

Red Web Master

unread,
Jan 20, 2012, 3:10:35 AM1/20/12
to
Sulle pagine del mio sito uso per l'intestazione uno script in javascript
richiamato dalla istruzione:
<script type="text/javascript" src="intestazione.js"></script>Vorrei
incorporare, in coda al file intestazione.js, altre istruzioni provenienti
da questo file esterno (lo share di facebook)
<script src="http://static.ak.fbcdn.net/connect.php/js/FB.Share"
type="text/javascript">
</script>E' possibile?

Romeo
--

http://www.brianzapopolare.it


coder

unread,
Jan 20, 2012, 6:08:44 AM1/20/12
to
On 01/20/2012 09:10 AM, Red Web Master wrote:
> E' possibile?

Non si può includere un file javascript in un altro file javascript.
Li devi includere entrambi nella pagina html:

<head>
<script type="text/javascript" src="intestazione.js"></script>
<script src="http://static.ak.fbcdn.net/connect.php/js/FB.Share"
type="text/javascript"></script>
</head>

Inoltre importa l'ordine di inserimento, quindi se vuoi usare funzioni o
variabili globali di facebook in intestazione.js (cosa che dal tuo
messaggio non capivo), devi mettere prima facebook e poi intestazione.js:

<head>
<script src="http://static.ak.fbcdn.net/connect.php/js/FB.Share"
type="text/javascript"></script>
<script type="text/javascript" src="intestazione.js"></script>
</head>

Ciao.

coder

unread,
Jan 20, 2012, 6:13:10 AM1/20/12
to
On 01/20/2012 12:08 PM, coder wrote:
> Non si può includere un file javascript in un altro file javascript.

Aggiungo che se il tuo intestazione.js dipende da un altro script
(facebook in questo caso) allora è buona norma scriverlo nel commento
iniziale di intestazione.js (scrivendo: "questo file dipende da xyz.js
per utilizzarlo dovete includere prima xyz.js e poi questo script.) E
magari includendo pure un esempio di come si includono entrambi in una
pagina html. Ciao.

Red Web Master

unread,
Jan 20, 2012, 8:24:17 AM1/20/12
to
"coder" <c...@nomail.not> ha scritto nel messaggio
news:jfbhvr$89p$1...@speranza.aioe.org...
> On 01/20/2012 09:10 AM, Red Web Master wrote:
>> E' possibile?
>
> Non si può includere un file javascript in un altro file javascript.
> Li devi includere entrambi nella pagina html:
>
Il mio probleme è che mentre il mio file ha sempre lo stesso nome e
contenuto che può variare volevo fare la stessa cosa con il file fornito da
facebook ovvero scrivere un file generico che includesse il file di facebook
o qualunque altro file fornito tramite un collegamento esterno.


Romeo



ZER0

unread,
Jan 20, 2012, 12:15:34 PM1/20/12
to
Si, in diversi modi. Puoi usare `document.write`, puoi usare le DOM API,
puoi usare l'XMLHttpRequest (per recuperare il contenuto del file
javascript, e successivamente `eval`); oppure puoi usare RequireJS:

http://requirejs.org/

coder

unread,
Jan 20, 2012, 2:52:45 PM1/20/12
to
On 01/20/2012 02:24 PM, Red Web Master wrote:
> Il mio probleme è che mentre il mio file ha sempre lo stesso nome e
> contenuto che può variare volevo fare la stessa cosa con il file fornito da
> facebook ovvero scrivere un file generico che includesse il file di facebook
> o qualunque altro file fornito tramite un collegamento esterno.

Scusa, magari e' colpa mai, ma bisogna che mi fai un esempio pratico
perche' non ho capito nulla. File generico? includesse il file di
facebook? esempio pls :)

Red Web Master

unread,
Jan 21, 2012, 3:11:30 AM1/21/12
to
"coder" <c...@nomail.not> ha scritto nel messaggio
news:jfcgma$mh3$1...@speranza.aioe.org...
Per inserire un "condividi" di Facebook attualmente bisogna inserire il
seguente codice:
------
<a name="fb_share">
<script src="http://static.ak.fbcdn.net/connect.php/js/FB.Share"
type="text/javascript">
</script>
------
Quel modo di inserire il "condividi" potrebbe cambiare nel tempo ed essere
perciò inutilizzabile a meno di non cambiarlo in tutte le pagine (statiche)
del sito che sono diverse migliaia. Pertanto sarebbe utile poter scrivere un
unico file share.js che incorporasse il codice Facebook, che venisse
richiamato con <script src="share.js"
type="text/javascript"></script> ed il cui risultato, nel sorgente
generato, fosse il codice Facebook citato. Il tentativo di trasformare il
codice Facebook in una stringa e scriverlo attraverso un document.write non
ha dato nessun risultato forse perché risulterebbe uno script dentro un
altro scrpt.
In realtà la questione più generale è anche se sia possibile (direttamente o
con qualche artificio) inserire dinamicamente in un file js un pezzo di
codice proveniente da un file esterno (in questo caso
src="http://static.ak.fbcdn.net/connect.php/js/FB.Share").

Grazie per l'attenzione.

Romeo


http://www.brianzapopolare.it


coder

unread,
Jan 21, 2012, 12:32:03 PM1/21/12
to
On 01/21/2012 09:11 AM, Red Web Master wrote:
> Per inserire un "condividi" di Facebook attualmente bisogna inserire il
> seguente codice:
> ------
> <a name="fb_share">
> <script src="http://static.ak.fbcdn.net/connect.php/js/FB.Share"
> type="text/javascript">
> </script>
> ------
> Quel modo di inserire il "condividi" potrebbe cambiare nel tempo ed essere
> perciň inutilizzabile a meno di non cambiarlo in tutte le pagine (statiche)
> del sito che sono diverse migliaia.

Ok, ora si capisce.
Il fatto e' che come mostri tu il bottone non si crea solo grazie alla
presenza dello script ma "dello script + il tag a", quindi sono entrambe
le cose che potrebbero cambiare. Non ha senso trovare una soluzione (con
magheggiamenti piu' o meno strani) per lo script quando domani anche il
tag "a" potrebbe cambiare.
Quello che mi viene in mente e':
1) IMvHO non penso proprio che facebook si mettera' mai a cambiare
queste cose di base, e se lo facesse manterrebbe la retrocompatibilita',
2) se le pagine sono php e il contenuto e' gia' creato server-side,
anche quella porzione di pagina puoi crearla a runtime
3) se le pagine sono html, quando volessi mai cambiarle fai una passata
con programmi tipo "sed" e rimpiazzi il testo.
Ciao.

Red Web Master

unread,
Jan 21, 2012, 1:22:33 PM1/21/12
to
"coder" <c...@nomail.not> ha scritto nel messaggio
news:jfesqg$n23$1...@speranza.aioe.org...
Purtroppo le pagine sono in HTML e non in php ed č per questo che cercavo
una soluzione "simil php" ma a quanto pare non c'č.
Usando Dreamweaver non ci sarebbe il problema della sostituzione di pezzi di
codice ma poi dovrei uploadare di nuovo gli oltre 4000 file del sito.
Grazie comunque per l'attenzione.

Romeo

--
http://www.brianzapopolare.it


ZER0

unread,
Jan 22, 2012, 7:35:06 AM1/22/12
to
On 21/01/12 19:22 , Red Web Master wrote:

> Purtroppo le pagine sono in HTML e non in php ed è per questo che cercavo
> una soluzione "simil php" ma a quanto pare non c'è.

Come ti ho già detto nel mio post, la soluzione c'è, e può essere fatta
in diversi modi. Nel tuo caso, direi che quella più appropriata - visto
che non si tratta solo di un file javascript ma di un "fragment" HTML -
è quella di usare o `document.write` (che, contrariamente a quanto dici
tu, funziona benissimo anche all'interno di script, a meno di non
commettere errori) o le DOM API (per aggiungere sia il nodo `a` che il
nodo `script`).

coder

unread,
Jan 22, 2012, 9:51:37 AM1/22/12
to
On 01/22/2012 01:35 PM, ZER0 wrote:
> Come ti ho già detto nel mio post, la soluzione c'è, e può essere fatta
> in diversi modi.

Io non dicevo che era impossibile, dicevo che uno script non puo'
includere un altro script.
Red Web Master e ZERO guardate se questo va bene.

<html>
<head>
<script src=prova.js></script>
</head>
<body onload="fb_marker_check()">
<h3>test1</h3>
<p class="fb_marker">
<h3>test2</h3>
<p class="fb_marker">
<h3>test3</h3>
<p class="fb_marker">
</body>
</html>

dove prova.js contiene:

function fb_marker_check() {
markers = document.getElementsByClassName("fb_marker");
for (i = 0; i < markers.length; i++) {
var a = document.createElement("a");
a.name = "fb_share";
var script = document.createElement("script");
script.src = "http://static.ak.fbcdn.net/connect.php/js/FB.Share";
markers[i].appendChild(a);
markers[i].appendChild(script);
}
}

Ciao

Red Web Master

unread,
Jan 22, 2012, 10:09:48 AM1/22/12
to
"coder" <c...@nomail.not> ha scritto nel messaggio
news:jfh7pn$fiq$1...@speranza.aioe.org...
> On 01/22/2012 01:35 PM, ZER0 wrote:
>> Come ti ho già detto nel mio post, la soluzione c'è, e può essere fatta
>> in diversi modi.
>
> Io non dicevo che era impossibile, dicevo che uno script non puo'
> includere un altro script.
> Red Web Master e ZERO guardate se questo va bene.
<CUT>

Ho fatto diverse prove e pare che ora funzioni anche nel caso di uno script
all'interno di un altro script.
In questo modo:

PAGINA HTML QUALSIASI

<script type="text/javascript" src="styles/facebook.js"></script>

FILE FACEBOOK.JS

// Compatibile con XHTML 1.1
var cText = '';
cText += '<a name="fb_share">';
cText += '&nbsp;';
cText += '</a>';
cText += '<script src="http://static.ak.fbcdn.net/connect.php/js/FB.Share"';
cText += 'type="text/javascript">';
cText += '</script>';


document.write(cText);


NOTA
Il codice non funzionava, e non so perché, se lo scrivevo così (ovvero un
Tag vuoto):

cText += '<a name="fb_share">';
cText += '</a>';
...

Terrò comunque gelosamente presenti gli altri suggerimenti di Zero e Coder
nel caso qualcosa non funzionasse o per altri usi.

Ciao e grazie

Romeo

--
http://www.brianzapopolare.it
http://www.prcbrianza.it


ZER0

unread,
Jan 22, 2012, 2:36:23 PM1/22/12
to
On 22/01/12 15:51 , coder wrote:

>> Come ti ho già detto nel mio post, la soluzione c'è, e può essere fatta
>> in diversi modi.

> Io non dicevo che era impossibile, dicevo che uno script non puo'
> includere un altro script.

Infatti il mio post non era diretto a te, quanto all'OP.

Quanto il fatto che uno script non possa includere un altro script, è
solo una questione di cosa s'intende per "inclusione", e di contesto.
Se intendiamo dire che "nativamente" non esiste alcuna istruzione
specifica per includere uno script da codice JavaScript, e
circoscriviamo questa definizione al JavaScript usato attualmente nei
browser, allora la risposta è si, uno script non può includere un altro
script.
Se invece cambiamo la definizione o il contesto, allora la risposta è
no, uno script può includere un altro script. Ad esempio, in CommonJS
puoi tranquillamente usare `require` (NodeJS, Addon-SDK, Ringo, Narwhal,
etc); su browser puoi usare RequireJS per ottenere la stessa cosa (in
questo caso l'istruzione non è "nativa"); In ES6 invece sono stati
introdotti i moduli di CommonJS a livello di sintassi.

ZER0

unread,
Jan 22, 2012, 2:39:27 PM1/22/12
to
On 22/01/12 16:09 , Red Web Master wrote:

> Ho fatto diverse prove e pare che ora funzioni anche nel caso di uno script
> all'interno di un altro script.

Come ti ho detto nel mio post, document.write funziona tranquillamente
per questo tipo di scenario.

> cText += '</script>';

Ti conviene fare l'escape del tag:

cText += '<\/script>';

Oppure separarlo:

cText += '</scr' + 'ipt>';

Questo perché, fintanto che è in un file esterno non è un problema, ma
se provi a metterlo come codice inline di un tag <script>, il browser
interpreterà quella stringa come chiusura del tag stesso, dandoti un errore.
0 new messages