Autor Zpráva
Corben - Radek Zemanek
Profil *
Mam problem, potrebuji spustit alert vlozeny do do id='bla' , vi nekdo jak na to?


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title></title>
</head>
<body>
<div id='bla'>text</div>
<a href='' onclick='return !udelej()'> mackni </a>
<script type='text/javascript'>
function udelej()
{
var text = "<script> alert("ahoj"); </script>";

document.getElementById("bla").innerHTML = text;

return true;
}
</script>
</body>
</html>
Corben - Radek Zemanek
Profil *
aha... tak koukam ze innerHTML toto ignoruje :/ ... pekne ... nevi nekdo jak to obejit???
Joker
Profil
Skript uvnitř <div>u? To jsou mi věci...

Buď bych ten kód provedl přímo anebo bych to u toho <div>u pověsil na nějakou událost.
Corben - Radek Zemanek
Profil *
ne to ne ... potrebuju vkladat script dynamicky...
Corben - Radek Zemanek
Profil *
vycetl jsem z predchozich diskuzich toto:

var b = document.getElementsByTagName('BODY')[0];
var sc_el = document.createElement("script");
sc_el.innerHTML= 'alert("ahoj")';

b.appendChild(sc_el);

vsechny prohlizece ok, krom IE!!! muzete mi nekdo helfnout?? sem bezmocnej
nosko
Profil
Mne napadla takáto hlúposť, ale radšej to skús tým tvojim spôsobom(toto zase nefunguje pod operou, s tým IE ti snáď niekto helfne)

function udelej()
{

var exe = "if(5>6) alert("qweqe"); else alert("qweqwe");"; //document.getElementById().value
var text = "<img src='nejakyobr.jpg' style='display:none' onload='"+exe+"'>";
document.getElementById("bla").innerHTML = text;

return true;
}

//edit: v tých alertoch má byť spätné lomítko a "
Corben - Radek Zemanek
Profil *
jo snad... potreboval bych to jako sul.. uz sem dokonce i nasranej... ******* IE, furt musi byt necim jiny
nosko
Profil
window.onload= function(){
b = document.getElementsByTagName("BODY")[0];
scel = document.createElement("script");
scel.text= "alert('ahoj')";
b.appendChild(scel);
}

google
Corben - Radek Zemanek
Profil *
aha.. takze stacilo pouzit scel.text misto scel.innerHTML... ***** drat :)) ... thx jeste to zkusim osefovat a jestli to pujde tak good :)
Corben - Radek Zemanek
Profil *
ta svine IE mi pada :(
Chamurappi
Profil
Reaguji na Corbena - Radka Zemanka:
Co přesně má ten skript dělat, až bude hotový? Jestli ti jde jen o spuštění jiného skriptu, který máš v řetězci, tak existují mnohem jednodušší a spolehlivější postupy, třeba funkce eval.

Reaguji na Jokera:
Skript uvnitř <div>u? To jsou mi věci...
Na tom je něco divného?
peta
Profil
Corben - Radek Zemanek
innerHTML nespousti JS. Co je na tom divneho? Precti si kazdou literaturu, co k te funkci najdes, melo by to byt v kazde.
Kdyby to delal, mohlo by dojit k zacykleni. Uz dost na tom, ze tohle provadi funkce eval()

Jako, ty ten script muzes zavolat po tom innerhtml, ne?
Neni to ani tyden, co se tu ptal clovek na totez.
Nox
Profil
peta
To není pravda
- do innerHTML psát JS můžeš, nebo minimálně události (což je JS) fungují naprosto jistě
- tady ten alert nepojede, protože není vyvolaný žádnou událostí a není v události a proto
by fungoval, jen kdyby tam byl v okamžiku načítání

Corben - Radek Zemanek

To co píšeš je dost nesmysl, resp. atomovkou na komára

- proč nedáš prostě onclick="alert('ahoj')" ?
- a když už to chceš dělat takto, tak proč dáváš do řetězce uvozovky? tam dej apostrof
Corben - Radek Zemanek
Profil *
no je tu problem ten, ze mam Redakcni system a veskere texty jsou v databazy, ajaxem taham text z databaze a v tom je ten problem. V textu se muze vyskytnout script ktery potrebuji aby se spustil (napr. pro vlozeni flashe, nahrazeni odkazu atd). proto to potrebuji delat takhle... samozrejme kdyz budete znat jinaci zpusob jak to udelat aniz bych musel menit ten text vytazeny z db tak to bude ok a budu velmi rad kdyz se o nej podelite. Jinak ten text je validni XHTML retezec se scriptama JS
Corben - Radek Zemanek
Profil *
mimochodem alert ani nejde... pri pouziti alertu v ie tak prohlizec padne.... ostatni zatim fajci ok...
Corben - Radek Zemanek
Profil *
jeste abych reagoval na funkci eval() ta pusti skripty ale nepobere html kod a parsovat cely obsah stranek se mi fakt nechce :)
Corben - Radek Zemanek
Profil *
oprava chybky... pise se databazi :)) ... sem to ale cecha :))
peta
Profil
Corben - Radek Zemanek
eval prevadi text na JS kod. Ta nema proc prevadet text na document.write.
Jinymi slovy, nechapu, co jsi myslel.

co se tyce flash/js, tak ten se da nacist do iframe.
jestli pouzivas to, ze davas do stranky flash pomoci JS scriptu, tak to je jedna z nejuzasnejsich kombinaci, jak neco zmrvit.
Ja bych reklamu dal do iframe nebo nacetl celou stranku s includy v PHP. Nevidim duvod, proc to davat do stranky pres ajax. To pak mas:
<script>ajax('<script>reklama document.write("<tag>")');
mohlo by byt velice zajimave u toho resit lomitka pro retezce :)

Jo, k Noxovi, scripty se totiz nacitaji s celou strankou. Pokud je stranka nactena, uz se novy script nenacita do ni. Pokud ten script nepridas jinym scriptem, coz innerHTML neni.

Tj, v podstate jedine mozne reseni je to proste parsovat a dany script spustit pres eval. Podle mne jine neni, pokud to chces delat takto.
To parsovani muzes resit pres JS DOM a tim nahradis cele innerHTML.
A kdyz uz pouzijes JS DOM, pak muzes nacitat ajax do XML, ktere je pro toto vhodnejsi.

Nox
nechapu.
Pises totez, co ja
pp> "innerHTML nespousti JS"
nn> "tady ten alert nepojede, protože není vyvolaný žádnou událostí a není v události a proto "
Corben - Radek Zemanek
Profil *
a kdo rika ze to tak mam delany?? pro vlozeni flashe mam jednoduchou funkci kde predavam parametrem nazev flashe, takze mi staci mit v textu jen <script> muj_flash("tuten",400,200); </script> a mam tam flash... iframe nepouzivam od doby co jsem vylezl ze stredni ;) ... zatim mi to funguje dobre a pokud se nevyskytne nejaky problem, tak to zatim necham...
Corben - Radek Zemanek
Profil *
a co se tech lomitek tyce, tak v php je dostatek funkci na podobne zalezitosti...
peta
Profil
http://developer.mozilla.org/en/docs/skins/devmo/prototype.js
Corben - Radek Zemanek
Profil *
diky... uz mam vyreseno, ale tohle jetaky zajimavy :)

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: