PDA

View Full Version : [JAVASCRIPT] Script injection


pumax84
01-03-2010, 20:43
Salve a tutti,
da due giorni sto cercando di risolvere un problema dal quale non riesco a venirne fuori.

Nel mio sito ho un file (main.js) nel quale sono contenute tutte le funzioni javascript. In una di queste funzioni ho la necessità di inserire del codice per creare uno script dinamicamente (a seconda delle scelte lato utente) in un div.

Il div nella pagina php ha id "ads_box". Per creare lo script ho provato nei seguenti modi:

function insertScript() {
var scriptElem = document.createElement("script");
scriptElem.setAttribute("type", "text/javascript");
var content = document.createTextNode("alert('ciao');");
scriptElem.appendChild(content);
document.getElementsById('ads_box').appendChild(scriptElem);
}



function insertScript(){
var scriptElem = "<"+"script"+">";
scriptElem = scriptElem + "alert('ciao');";
scriptElem = scriptElem + "<"+"\/"+"script" + ">";
document.getElementById('ads_box').innerHTML = scriptElem;
}


Nessuno dei due però riesce a farmi comparire l'alert di prova.

Ho provato anche a sostituire i caratteri speciali "<" e ">" con le rispettive entità HTML, ovvero "&lt;" e "&gt;", ma naturalmente il risultato che ottengo è la stampa di <script>alert('ciao');</script> e non la finestra d'avviso.

Qualcuno sa come risolvere? Grazie mille.

Ciao,
Francesco

pumax84
02-03-2010, 20:36
Nessuna idea? Spiego meglio il problema, così magari a qualcuno viene in mente qualcosa.

Lo script che dovrei aggiungere è quello di Google AdSense.

Sto provando con la seguente funzione:
function include_dom(script_filename) {
var html_doc = document.getElementById('ads_box');
var js = document.createElement('script');
js.setAttribute('language', 'javascript');
js.setAttribute('type', 'text/javascript');
js.setAttribute('src', script_filename);
html_doc.appendChild(js);
return false;
}

la quale deve semplicemente creare uno script "al volo" dentro il div ads_box, ad esempio:
<div id="ads_box"><script>alert('ciao');</script></div>

Con l'alert funziona, ma con il codice dell'adsense no, che è questo:
<script type="text/javascript">
<!--
google_ad_client = "pub-xxxxxxxxx";
google_ad_slot = "xxxxxxxxx";
google_ad_width = 160;
google_ad_height = 600;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>

Siccome sono due script (il primo con contenuto e il secondo con link a script esterno) allora ho pensato di mettere in un file esterno anche il contenuto del primo, ovvero questo codice in "ads.js":

<!--
google_ad_client = "pub-xxxxxxxxx";
google_ad_slot = "xxxxxxxxx";
google_ad_width = 160;
google_ad_height = 600;
//-->

dopodiché richiamare la funzione due volte in questo modo:

include_dom("ads.js");
include_dom("http://pagead2.googlesyndication.com/pagead/show_ads.js");


Il problema è che mi restituisce una pagina totalmente bianca e in basso Firefox rimane in "Lettura di http://... ". La console degli errori di Firefox mi indica: google_protectAndRun is not defined