Autor Zpráva
peta
Profil
mam takovou hezkou funkci a stale se nemuzu dobrat rozumneho vysledku v opere 8.5. Jestli matenekdo novejsi, zkuste to v novejsi
Funkce by v podstate mela nahradit HTTPrequest, s tim, ze je treba pracovat s html/text a nastavit v xml/html akci onload, aby se docililo ukonceni nacitani
Snad uvadim celou funkci. V IE ani FF jsem zadny problem nemel.
V Opere je nutne funkci spustit 3x. po odkomentovani alert(d) zjistite proc.
1. Nejprve udela iframe, ale nema pristup do document, opera vyhlasi chybu.
2. pak prepise body, ale snespusti nic na d.f.submit
3. a pak teprve spusti submit akci.
Opet mne to utvrzuje v nazoru, k cemu opera je dobra.

var htmlHead = new Array(
"<html>",
"<head>",
" <meta http-equiv="Content-language" content="cz"/>",
" <meta http-equiv="Content-Type" content="text/html; charset=windows-1250"/>",
" <title>ajax</title>",
"</head>",
"<body>"
);
var htmlFoot = new Array(
"</body>",
"</html>"
);


function creRequest(url,args,func,method,enc)
{
var o,e,n, d,htmlBody,i,j,x,arr,reg;
n = "AjaxIFrame";
e = window[n];
if (e==null)
{
o = document.getElementsByTagName('BODY')[0];
e = document.createElement("IFRAME");
e.name = n;
e.id = n;
o.appendChild(e);
}


enc = (enc) ? enc : "multipart/form-data";
j = 0;
htmlBody = new Array();
htmlBody[j++] = "<form name="f" action=""+url+"" method=""+method+"" enctype=""+enc+"">";
reg = new RegExp("&","");
arr = (args!=="" && reg.test(args)) ? args.split("&") : new Array(args);
for (i=0;i<arr.length;i++)
{
x = arr[i].split("=");
htmlBody[j++] = "<input type="hidden" name=""+x[0]+"" value=""+x[1]+""/>";
}
htmlBody[j++] = "<input type="hidden" name="ajaxonload" value=""+func+""/>";
htmlBody[j++] = "</form>"


d = frames[n].document;
//alert(d)
d.open('text/html');
d.write(htmlHead.join(" ") + " " + htmlBody.join(" ") + " " + htmlFoot.join(" "));
d.close();
d.f.submit();
}

var ajax = new Object();
ajax.sendPost = function(url,args,func)
{
creRequest(url,args,func,"POST");
}

<script>alert(1)</script>

<span onclick="ajax.sendPost('./ajaxframe.htm','text=ahoj','alert')">Zkouska </span>
peta
Profil
podarilo se mi to zmenit na 2xrefresh, posledni radky na:
...
d.close();
d = window[n].document; //Opera bug
d.f.submit();

a kdyz pouziji:
alert(window[n])
d = window[n].document;
d.open('text/html');
d.write(htmlHead.join(" ") + " " + htmlBody.join(" ") + " " + htmlFoot.join(" "));
...
tak se mi to zcela zahadne provede, akorat je to zastaveno alertem.
peta
Profil
tak, mam to :)
Opera se ukazala v pravem svetle :)
stacilo nadefinovat
e.src = "";
pro iframe. Bez toho..., proste opera
Toto téma je uzamčeno. Odpověď nelze zaslat.