Textlink validně (téměř)

Doplnění po použití hlavy

Takže nejdříve xhtml, tahle stránka zjišťuje, zda je prohlížeč akceptuje hlavičku application/xhtml+xml . Pokud prohlížeč akceptuje xhtml pošleme mu object s typem text/html, jako náhradu iframe. Toto budou akceptovat gecko prohlížeče a Opera Pro IE pošleme iframe pomocí DOM

Zdrojový kód xhtml : index.php

<?php ob_start("ob_gzhandler");?>
<?php
if ( stristr($_SERVER["HTTP_ACCEPT"],"application/xhtml+xml") ) {
header("Content-type: application/xhtml+xml");
}
else {
header("Content-type: text/html");
}
header("Cache-Control: must-revalidate");
header("Expires: ".gmdate("D, d M Y H:i:s",
time() + 60*60*24*2)." GMT");
?>
<<? ?>?xml version="1.0" encoding="windows-1250"?<? ?>>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="cs">
<head>
<meta http-equiv="content-type" content="text/html; charset=windows-1250" />
<title>Titulek</title>
<link rel="stylesheet" type="text/css" media="screen,projection" href="index-css.php" />
<?php
if ( stristr($_SERVER["HTTP_ACCEPT"],"application/xhtml+xml") ) {
echo("<link rel=\"stylesheet\" type=\"text/css\" media=\"screen,projection\" href=\"object-css.php\" />");
}
else {
echo("<script type=\"text/javascript\" src=\"indexie-js.php\" charset=\"windows-1250\"></script>");
}
?>
</head>
<body>
<?php
if (stristr($_SERVER["HTTP_ACCEPT"],"application/xhtml+xml")){
  echo("<object data=\"http://www.textlink.cz/show2.php?id=1&linkcolor=000000&bgcolor=FFFFFF&textcolor=000000\" type=\"text/html\" id=\"object\" width=\"500\" height=\"80\" class=\"sxt\"></object>");
}
?>

</body>
</html>
<?php ob_end_flush();?>

Teď pošleme javascript pro IE, tam je to sice nevalidní, ale je to úplně jedno, protože do html to nezasáhne a prohlížeč v klidu vloží iframe přesto, že to není správně. Mimochodem někde jsem viděl script který pomocí regulerních výrazů přepíše celý zdrojový kód pro IE na straně serveru do HTML 4.0 (odstraní to lomítka a tak) a hádejte jak to w3c validator validuje? Bingo jako HTML 4.0 , protože totiž ani validator neumí application/xhtml+xml (tak trochu smutný příběh).

Zdrojový kód indexie-js.php

 <?php 
if (function_exists('ob_get_level') && (ob_get_level() > 0))
  ob_start("ob_gzhandler");
header("Content-type: text/javascript");
header("Cache-Control: must-revalidate");
header("Expires: ".gmdate("D, d M Y H:i:s",
        time() + 60*60*24*2)." GMT");
?>
var d=document;
function getId(id){return d.getElementById(id);}
function creEl(ele){return d.createElement(ele);}
function setifr(){
var ifra = creEl('iframe');
ifra.setAttribute('src','http://www.textlink.cz/show2.php?id=1&linkcolor=000000&bgcolor=FFFFFF&textcolor=000000');
ifra.setAttribute('id','loadTo');
ifra.setAttribute('width','485');
ifra.setAttribute('height','80');
ifra.setAttribute('marginwidth','0');
ifra.setAttribute('marginheight','0');
ifra.setAttribute('hspace','0');
ifra.setAttribute('vspace','0');
ifra.setAttribute('scrolling','no');
ifra.setAttribute('frameborder','0');
ifra.setAttribute('border','0');
ifra.setAttribute('bordercolor','#fff');
ifra.setAttribute('style','margin:0;padding:0;border:0 solid #fff;border-spacing:0;border-collaps:collaps;text-align:center;');
d.getElementsByTagName('body').item(0).appendChild(ifra);
}
/*********************************************
*used function addEvent for calling event from tutorial Blockquote Citations Demo
*source: http://www.sitepoint.com/print/structural-markup-javascript
*this is instead of window.onload (window.onload is buggy in IE4 and so on)
**********************************************/
function loadIE(obj,evType,fn){
if (obj.attachEvent){
var r=obj.attachEvent("on"+evType,fn);
return r;
}}
loadIE(window, 'load',setifr);
<?php ob_end_flush();?>
 

Nyní zývá už jen css

Zdrojový kód index-css.php

<?php
if (function_exists('ob_get_level') && (ob_get_level() > 0))
  ob_start("ob_gzhandler");
header("Content-type: text/css");
header("Cache-Control: must-revalidate");
header("Expires: ".gmdate("D, d M Y H:i:s",
        time() + 60*60*24*2)." GMT");
?>
.sxt{width:470px;height:62px;overflow:auto;margin:2px;padding:2px;border:1px solid;background:#ccc;}
body{margin:0;padding:0;}
<?php ob_end_flush();?>

Funkčnost: novější Gecko prohlížeče a Opera bez závislosti na javascriptu. V MSIE 5+ nutnost mít povolen javascript. Pro provozování reklamy typu textlink je to dle mého názoru stále dost velké procento návštěvníků