Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [JavaScript] Własne adsense , problem z miejscem docelowym reklamy
grubyx
post
Post #1





Grupa: Zarejestrowani
Postów: 34
Pomógł: 1
Dołączył: 5.10.2006

Ostrzeżenie: (0%)
-----


Witam. Piszę na własne potrzeby coś podobnego do Google Adsense. Zrobiłem wszystko dobrze, ale mam jednen problem. Mogę umieścić tylko jeden banner na stronie. Kawałek kodu java script:

// Funkcja odpowiedzialna za pobranie html'a bannera (pobiera b. dobrze)
function Response() {
var text = ajaxreq.responseText;

div = document.getElementById("box_" + id_box);
div.innerHTML = text;
}

Kod HTML, który wklejam na stronę:

  1. <script type="text/javascript">var id_box = 100;</script>
  2. <script src="SERVER/js/getbanner.js" type="text/javascript"></script>
  3. <div id="box_100"></div>


Chodzi o to aby móc wkleić ten kod 2, 3 a nawet 50 razy za każdym razem używając innego parametru id_box (obecnie pokazuje tylko dla ostatniego). Kod HTML nie może się zbyt różnić od tego . (chce by osoby, które nie mają zbyt pojęcia o stronach mogly go wklejac w odpowiednie miejsce i miec banner a nie bawić się w edycje kilku elementów strony). Problem polega na tym, że pobiera tylko ostatnia wartość id_box (i dla niej ustawia banner, wcześniejsze są ignorowane). Bardzo proszę forum o pomoc. Pozdrawiam.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
kamil4u
post
Post #2





Grupa: Zarejestrowani
Postów: 2 350
Pomógł: 512
Dołączył: 4.01.2009
Skąd: Wrocław / Świdnica

Ostrzeżenie: (0%)
-----


Nie za bardzo rozumiem.... Zrób funkcję:
Kod
unction Response(id) {
var text = ajaxreq.responseText;

div = document.getElementById("box_" + id);
div.innerHTML = text;
}
///////////////////
// i
///////////////////
<script type="text/javascript">Response(1);Response(2);Response(100);Response(5);</script>


Tylko nie wiem czy to o to chodziło, a wydaje mi się, że nie. Opisz może bardziej opierając się na kodzie(jak chcesz, żeby wyglądało wywołanie odpowiedniego baneru )


--------------------
Go to the top of the page
+Quote Post
grubyx
post
Post #3





Grupa: Zarejestrowani
Postów: 34
Pomógł: 1
Dołączył: 5.10.2006

Ostrzeżenie: (0%)
-----


Mam skrypt:
var ajaxreq = ajaxRequest();

var url = 'http://pages.homelinux.com/adsense/public/banner/get/id/' + id_box;

process3();

function process3() {
if(ajaxreq) {
ajaxreq.open("GET", url, true);
ajaxreq.onreadystatechange = Handle3;
ajaxreq.send(null);
}
}
function Handle3() {
if(ajaxreq.readyState == 4 && ajaxreq.status == 200) {
Response3();
}
}



function Response3() {
var text = ajaxreq.responseText;

div = document.getElementById("box_" + id_box);
div.innerHTML = text;
}
function ajaxRequest() {
try {
ajaxreq = new XMLHttpRequest();
} catch(error) {
try {
ajaxreq = new ActiveXObject("Microsoft.XMLHTTP");
} catch(error) {
return false;
}
}

if(!ajaxreq)
return false;
else
return ajaxreq;
}

Pojedyńczy banner uruchamiam:

  1. <script type="text/javascript">var id_box = 98;</script>
  2. <script src="http://pages.homelinux.com/adsense/public/js/getbanner.js" type="text/javascript"></script>
  3. <div id="box_98"></div>

i jeśli raz wkleje taki kod na strone to nie ma problemu, banner zostaje wyświetlony. Natomiast jeśli zrobię coś takiego:
  1. <script type="text/javascript">var id_box = 98;</script>
  2. <script src="http://pages.homelinux.com/adsense/public/js/getbanner.js" type="text/javascript"></script>
  3. <div id="box_98"></div>

  1. <script type="text/javascript">var id_box = 98;</script>
  2. <script src="http://pages.homelinux.com/adsense/public/js/getbanner.js" type="text/javascript"></script>
  3. <div id="box_98"></div>

  1. <script type="text/javascript">var id_box = 100;</script>
  2. <script src="http://pages.homelinux.com/adsense/public/js/getbanner.js" type="text/javascript"></script>
  3. <div id="box_100"></div>

(W tym przykładzie chciałbym 3 bannery - dwa boxy o idzie 98 i jeden id = 100) , bannery powinny pojawiac się w miejscu w ktore wkleiłem (<div id="box_X"></div>) . Problem polega na tym, że tylko raz zachodzi połączenie z serwerem tylko dla ostatniego idu (w tym przypadku dla id_box = 100). Mam nadzieje, ze teraz rozjaśniłem bardziej sytuacje.
Go to the top of the page
+Quote Post
kamil4u
post
Post #4





Grupa: Zarejestrowani
Postów: 2 350
Pomógł: 512
Dołączył: 4.01.2009
Skąd: Wrocław / Świdnica

Ostrzeżenie: (0%)
-----


Cytat
Mam nadzieje, ze teraz rozjaśniłem bardziej sytuacje.

Jest znacznie lepiej smile.gif

Kod
function addBaner(id_box){
var ajaxreq = ajaxRequest();

var url = 'http://pages.homelinux.com/adsense/public/banner/get/id/' + id_box;

process3();

function process3() {
   if(ajaxreq) {
       ajaxreq.open("GET", url, true);
       ajaxreq.onreadystatechange = Handle3;
       ajaxreq.send(null);
   }
}
function Handle3() {
    if(ajaxreq.readyState == 4 && ajaxreq.status == 200) {
        Response3();
    }
}



function Response3() {
    var text = ajaxreq.responseText;
    
    div = document.getElementById("box_" + id_box);
    div.innerHTML = text;
}
function ajaxRequest() {
    try {
        ajaxreq = new XMLHttpRequest();
    } catch(error) {
      try {
        ajaxreq = new ActiveXObject("Microsoft.XMLHTTP");
      } catch(error) {
        return false;
      }
    }

    if(!ajaxreq)
      return false;
    else
      return ajaxreq;
}
}

i wywołanie
Kod
<script src="http://pages.homelinux.com/adsense/public/js/getbanner.js" type="text/javascript"></script>
<script>
addBaner(98);
addBaner(99);
addBaner(100);
</script>

<div id="box_98"></div>
<div id="box_99"></div>
<div id="box_100"></div>


W podanym przez Ciebie kodzie 3 razy uruchamiałeś ten sam baner(98), jednak to jest błąd i mam nadzieję, że był to tylko przykład. Błąd polega na tym, że id jest unikatowe i nie może się powtarzać.
--edit
A jednak to nie jest błąd... W takim razie przekształć funkcję na: addBaner(id_baneru, id_elementu); lub pobaw się z np. getElementsByName

Ten post edytował kamil4u 4.01.2011, 16:14:07


--------------------
Go to the top of the page
+Quote Post
grubyx
post
Post #5





Grupa: Zarejestrowani
Postów: 34
Pomógł: 1
Dołączył: 5.10.2006

Ostrzeżenie: (0%)
-----


Właśnie szukam takiego rozwiązania jakie oferuje Google Adsense. Czyli mogę wklejać:
<script type="text/javascript"><!--
google_ad_client = "pub-9191175133602823";
/* 300x250, utworzono 11-01-04 */
google_ad_slot = "9767482761";
google_ad_width = 300;
google_ad_height = 250;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
Dowolnie razy i w dowolne miejsce , Twoje rozwiązanie jest dobre, ale zależy mi na tym aby to było user friendly (takie coś jak Ty podałeś będzie wymagało wklejenia kodu do <head></head> i potem ustawienie poszczególnych div'ów na stronie a nie o to mi chodzi tylko > wklejam kod i jest banner w danym miejscu. Mam nadzieje, że teraz rozjaśniłem o co dokładnie mi chodzi smile.gif
Go to the top of the page
+Quote Post
kamil4u
post
Post #6





Grupa: Zarejestrowani
Postów: 2 350
Pomógł: 512
Dołączył: 4.01.2009
Skąd: Wrocław / Świdnica

Ostrzeżenie: (0%)
-----


Moje rozwiązanie jest dużo lepsze dla użytkownika. Nie traktuj ludzi jak całkowitych debili. Tym moim rozwiązaniem też nie musisz wrzucać kodu do <head>, aczkolwiek,byłoby lepiej smile.gif np.
Kod
//objętnie gdzie wklejasz to:
<script src="http://pages.homelinux.com/adsense/public/js/getbanner.js" type="text/javascript"></script>

//A to w miejscu, gdzie ma być div:

<script>addBaner(98);</script>
<div id="box_98"></div>

//możesz kilka razy:

<script>addBaner(99);</script>
<div id="box_99"></div>

<script>addBaner(100);</script>
<div id="box_100"></div>

<script>addBaner(101);</script>
<div id="box_101"></div>


I co nie jest user friendly?

Takie coś jak zrobiło Google nie jest takie proste... I szczerze mówiąc na razie nie mam pomysłu jak to zrobili(a na analizowanie ich kodu nie mam czasu, niestety)...

Ten post edytował kamil4u 4.01.2011, 16:27:28


--------------------
Go to the top of the page
+Quote Post
grubyx
post
Post #7





Grupa: Zarejestrowani
Postów: 34
Pomógł: 1
Dołączył: 5.10.2006

Ostrzeżenie: (0%)
-----


No nic będę musiał to tak zrobić póki nie wymyślę innego sposobu. Dzięki za poświęcony czas smile.gif
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 20.08.2025 - 10:16