Autor Zpráva
WMPopi
Profil
Ahoj,
potřebuju na webu zobrazovat těla mailů, který může být někdy ve formátu html se svým vlastním formátováním. Pokud to vložím do webu, budou se tlouct styly, opakovat značky body apod. Jako řešení mě napadlo iframe, ale potřebuji zobrazovat vždy celou výšku = posuvník je nežádoucí. To by se asi dalo zařídit javascriptem.

Je tohle ale ta nejlepší cesta?
Řešili jste někdo něco podobného?
Darker
Profil
Na seznamu to parsují a HTML přizpůsobí. V podstatě by sis musel vytvořit z HTML mailu objekt HTML (v PHP) a ten vypsat, tak aby se napravily neuzavřené značky a podobně.
Řekl bych že na internetu bude k najití nějaká PHP třída na parsování HTML. Protože parsovat ho budeš aspoň minimálně muset, jinak se nevyhneš hackingu. (skripty, obrázky v mailu například)
peta
Profil
WMPopi:
1. iframe / object
2. v php jde udelat jakysi multi body html, ale ted nevim, zda to body tag prida nebo prepise
3. v php muzes obsah nacist do promenne, do stylu pridat class a cely mail do tohoto class uzavrit
Ja ted mam podobny problem, rekneme, ze mam program, ktery zobrazi faktury na strance v iframu. Jenze problem je, ze to potrebuji tisknout a spatne se to zalamuje nebo ff orezava iframe presahujici stranku pri tisku, atd :)

JS je asi takovy
<p><input type="button" value="Zobraz" onclick="zobraz()"/> (vse pro tisk ve FF)</p>

<script type="text/javascript">
function getParam(name)
{
var tab, a, i, arr;
tab = document.getElementById('tab_splnili');
a   = tab.getElementsByTagName('A');
arr = [];
for (i=0;i<a.length;i++)
  {arr[arr.length] = a[i][name];}
//alert(arr.join(', '));
return arr;
}

function zobraz()
{
var i, arr, w, d;
arr = getParam('href');
w = window.open();
d = w.document;
d.open();
d.writeln("<!DOCTYPE html>\
\n<html>\
\n<head>\
\n<title>zapisove listy<\/title>\
\n<style media=\"print\">\
\nhtml, body {margin:0;padding:0;}\
\nhr {display:none;}\
\n<\/style>\
\n<script type=\"text\/javascript\">\
\nfunction resizeIframe(name)\
\n  {\
\n  var doc, body, height1, height2;\
\n  \/\/if (frametag.contentDocument)\
\n  \/\/  {doc = muj_iframe.contentDocument;}\
\n  \/\/if (frametag.contentWindow)\
\n  \/\/  {doc = muj_iframe.contentWindow.document;}\
\n  \/\/frametag = window.document[name];\
\n  frametag = document.getElementById(name);\
\n  doc = window[name].document;\
\n  if (doc!=null)\
\n    {\
\n    body    = doc.getElementsByTagName('body')[0];\
\n    height1 = body.scrollHeight;\
\n    height2 = body.offsetHeight;\
\n    height2 = height2>height1 ? height2 : height1;\
\n    height2 = height2>460     ? height2 : 460;	\/\/min-height\
\n	  frametag.style.height = height2 + 16 + 'px';\
\n    }\
\n  }\
\n<\/script>\
\n<\/head>\n<body>");
for (i=0;i<arr.length;i++)
  {
  d.writeln('\n<iframe src="'+arr[i]+'" name="frame'+i+'" id="frame'+i+'" onload="resizeIframe(\'frame'+i+'\')" style="width:100%;height:460px;page-break-before:always;" hspace="0" vspace="0" frameborder="0"><\/iframe>\n<hr>');
  }
d.writeln('\n<\/body>\n<\/html>');
d.close();
}
</script>

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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

0