Witam, zrobiłem sobie używając javascript "wysuwke" która się wysuwa po najechaniu i wypełnia tekstem przez ajaxa, w tym tekscie jest też link z zdarzeniem onclick które czasami wykonuje się za pierwszym razem a czasami za 10 sad.gif

js
  1. function l(e,c,t) {
  2. if(e.addEventListener)e.addEventListener(c, function(){t(e)}, false);
  3. else e.attachEvent('on' + c, function(){t(e)}); // IE
  4. }
  5.  
  6. function sf(e,s) {
  7. var id = e.getAttribute('id');
  8. var t = false, // typ animacji, true -> wysuń, false -> wsuń
  9. ps = 20, // pozycja początkowa
  10. pk = 250, // pozycja końcowa
  11. i, // interwał
  12. p, // pozycja aktualna
  13. d = e; // docelowy element przesuwany
  14.  
  15. if(!s)s=150; // domyslnie animacja ma się zmieścić w 150 ms
  16.  
  17. d.style.width = ps;
  18. // aktywuj wsuwanie / wysuwanie
  19. var a = function(n){
  20. t = n;
  21. if(!i) {
  22. i = setInterval(function(){ // ustaw interwał (stoper)
  23. p = parseInt(d.style.width);
  24. if(t) {
  25. // wysuń
  26. if(p < pk) {
  27. p += pk - p >2 ? 3 : pk - p; // przesuwamy co 3px (mniej obciąża przeglądarki niż 1px)
  28. d.style.display = 'block';
  29. d.style.width = p + 'px';
  30. } else {
  31. clearInterval(i); // czyścimy interwał
  32. i = null;
  33. }
  34. if(p>=pk) { wstaw('koszyk','koszyk'); }
  35. }
  36. if(!t) {
  37. // wsuń
  38. var dok = document.getElementById('koszyk');
  39. dok.innerHTML = 'K<br/>O<br/>S<br/>Z<br/>Y<br/>K<br/>';
  40. if(p > ps) {
  41. p -= p - ps >2 ? 3 : p - ps;
  42. d.style.width = p + 'px';
  43. } else {
  44. clearInterval(i);
  45. i = null;
  46. }
  47. }
  48. },Math.round(s/(pk-ps)*3)); // liczymy co ile milisekund ma się wykonywać przesunięcie, aby zmieścił się w @s sekund
  49. }
  50. };
  51. l(e,'mouseover',function(){a(true)});
  52. l(e,'mouseout',function(){a(false)});
  53. }
  54.  
  55. eval(function(p,a,c,k,e,d){e=function(c){return c.toString(36)};if(!''.replace(/^/,String)){while(c--){d[c.toString(a)]=k[c]||c.toString(a)}k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--){if(k[c]){p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c])}}return p}('o e(a,5,4){7(5==8)5=c;7(4==8)4=\'*\';2 6=h k();2 3=5.l(4);2 b=" "+a+" ";n(i=0,j=0;i<3.d;i++){2 9=" "+3[i].f+" ";7(9.m(b)!=-1)6[j++]=3[i]}g 6}',25,25,'||var|tags|tagName|domNode|el|if|null|test|searchClass|tcl|document|length|getEl
    ementsByClass|className|return|new|||Array|getElementsByTagName|indexOf|for|funct
    ion'.split('|'),0,{}))
  56. function getXMLHttpRequest()
  57. {
  58. var request = false;
  59. try {
  60. request = new XMLHttpRequest();
  61. } catch(err1) {
  62. try {
  63. request = new ActiveXObject('Msxml2.XMLHTTP');
  64. } catch(err2) {
  65. try {
  66. request = new ActiveXObject('Microsoft.XMLHTTP');
  67. } catch(err3) {
  68. request = false;
  69. }
  70. }
  71. }
  72. return request;
  73. }
  74. var kom;
  75. kom = getXMLHttpRequest();
  76. var gdzie;
  77. function processResponse()
  78. {
  79. if (kom.readyState == 4) {
  80. if (kom.status == 200) {
  81. a = document.getElementById(gdzie);
  82. a.innerHTML = kom.responseText;
  83. }
  84. }
  85. }
  86. function wstaw(co,id) {
  87. kom.open('GET', 'pliczek.php?id='+co, true);
  88. gdzie = id;
  89. kom.onreadystatechange = processResponse;
  90. kom.send(null);
  91. }


pliczek.php
  1. <?php session_start();
  2.  
  3. if($_GET['id']=='koszyk' && $_SESSION['login']) { ?>
  4. Ilośc produktów : <br/>
  5. Łączna cena : <br/>
  6. <a href="#" onclick="alert('raz');">Przejdź do koszyka</a><br/>
  7. Identyfikator sesji : <?php echo $_SESSION['login']; ?> <br/>
  8. <?php } ?>