Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: skrypt sprawdzający kliknięcie w konkretne pole
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
dark_root
Mam takie kody
Kod
<script language="javascript" type="text/javascript">
<!--
function right(e) {
if (navigator.appName == 'Netscape' && (e.which == 1 || e.which == 1)) {
document.cookie = "cookie=1";
return false;
}
else if (navigator.appName == 'Microsoft Internet Explorer' &&
(event.button==1
|| event.button == 1)) {
document.cookie = "cookie=1";
return false;
}
return true;
}
document.onmousedown=right;
if (document.layers) window.captureEvents(Event.MOUSEDOWN);
window.onmousedown=right;
// -->
</script>

Kod ten sprawdza czy został na stronie naciśnięty prawy przycisk myszy.
Kod
<style type="text/css">
#floater {
  position:absolute; visibility:hidden;
  width:150px; height:auto;
  color:#330;
  margin:0; padding:4px;
  border:1px solid #330;
  border-top:3px solid #330;
}
a.m {
  display:block; width:100%;
  margin:.5em 0;
}
</style>
<script type="text/javascript" src="floater_pliki/x_core.js"></script>
<script type="text/javascript" src="floater_pliki/xaddeventlistener.js"></script>
<script type="text/javascript" src="floater_pliki/xslideto.js"></script>
<script type="text/javascript">
var slideTime = 700, topMargin;
xAddEventListener(window, 'load',
  function () {
    topMargin = xPageY('leftColumn');
    winOnResize(); // set initial position
    xAddEventListener(window, 'resize', winOnResize, false);
    xAddEventListener(window, 'scroll', winOnScroll, false);
  }, false
);
function winOnResize() {
  xMoveTo('floater', xPageX('leftColumn')+xWidth('leftColumn')+20, topMargin);
  xGetElementById('floater').style.visibility = 'visible';
  winOnScroll(); // initial slide
}
function winOnScroll() {
  xSlideTo('floater', xLeft('floater'), xScrollTop() + topMargin, slideTime);
}
function setSlideTime(st) {
  st = parseInt(st);
  if (!isNaN(st)) slideTime = st;
  var e = xGetElementById('st');
  e.value = st;
  return false;
}
</script>

</head><body>

<div id="leftColumn" class="column"> <!-- Begin left column -->

<div class="leftContent"> <!-- Begin left content -->



</div> <!-- end menubar1 -->
</div> <!-- end header -->


<img src="javascript:void(setSlideTime(1000))"></p>
</div> <!-- end sponsor3 -->
</div> <!-- end leftColumn -->
<div style="left: 755px; top: 20px; visibility: visible;" id="floater" class="h2Bkgnd">
Ładny napis w pływającej ramce
</div>
Natomiast powyższy kod tworzy pływającą ramkę. Chciałbym jakoś połączyć te kody, żeby tworzyło się cookie jedynie, jeżeli zostanie naciśnięty prawy przycisk myszy, ale tylko gdy kursor znajduje się w polu pływającej ramki. Jak takie coś zrobić?
kamil4u
Nie analizowałem kodu:
Cytat
<script language="javascript" type="text/javascript">
<!--
function right(e) {
if (navigator.appName == 'Netscape' && (e.which == 1 || e.which == 1)) {
document.cookie = "cookie=1";
return false;
}
else if (navigator.appName == 'Microsoft Internet Explorer' &&
(event.button==1
|| event.button == 1)) {
document.cookie = "cookie=1";
return false;
}
return true;
}
referencja_do_pływającej_ramki.onmousedown=right;
if (document.layers) window.captureEvents(Event.MOUSEDOWN);
referencja_do_pływającej_ramki.onmousedown=right;
// -->
</script>
dark_root
Ale, czym zasadniczo różni się ten kod od mojego, bo ja nie widzę znaczącej różnicy. Być może jest jakiś inny sposób, żeby tego dokonać?
kamil4u
Zasadniczo tym:
Kod
referencja_do_pływającej_ramki.onmousedown=right;
if (document.layers) window.captureEvents(Event.MOUSEDOWN);
referencja_do_pływającej_ramki.onmousedown=right;
, dzięki temu zdarzenie będzie wyłapywane tylko na tej pływającej ramce smile.gif Poczytaj co to jest ta referencja to będziesz wiedział co masz z tym zrobić:)
dark_root
A można prosić o jakiś artykuł czy coś w ty stylu bo szukam, szukam o tej referencji i nic konkretnego znaleźć nie mogę smile.gif
kamil4u
Jak nie możesz znaleźć to poczytaj o: https://developer.mozilla.org/En/Document.getElementById - zwraca ona referencję do elementu o podanym ID. Sama referencja to hmmm... tak jakby zmienna (to nie jest zmienna, ale nie umiem tego nazwać) odwołująca się do czegoś np. zmiennej, funkcji, danego elementu(Twój przypadek) w np. HTML-u np. span, div, a, dzięki czemu możesz na tym elemencie wykonywać różnego rodzaju akcje - np. zmiana stylu CSS:
Kod
<div id="test">TEST</div>
<script>document.getElementById('test').style.color = 'red';</script>

to document.getElementById('test') to referencja do <div id="test">TEST</div>, a .style.color = 'red'; zmienia styl color na red (czerwony). Poczytaj także o DOM i nawigacji po nim.
dark_root
Czyli z tego co rozumiem ten kod powinien działać
Kod
<html>
<body><script language="javascript" type="text/javascript">
<!--
function right(e) {
if (navigator.appName == 'Netscape' && (e.which == 1 || e.which == 1)) {
document.cookie = "cookie=cookie1";
return false;
}
else if (navigator.appName == 'Microsoft Internet Explorer' &&
(event.button==1
|| event.button == 1)) {
document.cookie = "cookie=cookie1";
return false;
}
return true;
}
para1.onmousedown=right;
if (document.layers) window.captureEvents(Event.MOUSEDOWN);
para1.onmousedown=right;
// -->
</script>
<p id="para1">
sadasdasdasddas</p>
</body>
</html>

Jednak tak nie jest, pomimo, że zrobiłem tak jak pisze na stronie, którą podałeś. Dlaczego?
kamil4u
Szczerze nie chce mi się pisać wywodów - do tego potrzeba podstaw JS(głównie te pojęcia: zdarzenia, DOM), które musiał byś poznać, ale tu masz działający kod - zmieniony, ale robiący to samo:
Kod
<html>
<body>
<script language="javascript" type="text/javascript">
<!--
function right(e) {
    var rightclick;
    if (!e) var e = window.event;
    if (e.which) rightclick = (e.which == 3);
    else if (e.button) rightclick = (e.button == 2);
    if(rightclick){
          document.cookie = "cookie=cookie1";
          return false;
        }
        return true;
}

window.onload = function(e){
document.getElementById('para1').onmousedown=right;
}

</script>
<p id="para1">
sadasdasdasddas</p>
</body>
</html>



--edit--
Nie trzeba było posta usuwać smile.gif - ja swój 'edit' zostawię
Więc taki kod zadziała:
Kod
<a id="para1" href="BLABAL">
sadasdasdasddas</a>

Już wyjaśniam - jak poczytasz o DOM to dowiesz się, że skrypt szuka elementu z id="para1", czyli bez tego skrypt po prostu nie zadziała smile.gif
dark_root
Trochę źle się wyraziłem więc powtórzę post. Nie chodzi mi o jako tako odnośniki lecz o taki kod
Kod
<script type="text/javascript"><!--
width = 400;
height = 400;
//-->
</script>
<script type="text/javascript"
src="floater.js">
</script>
Generuje on banery reklamowe, które wyskakują na stronie. Jak tutaj odpowiednio dodać id albo coś w tym stylu?
kamil4u
Pokaż jak wygląda kod takiego baneru - firebug w FF pozwoli Ci zobaczyć to smile.gif
dark_root
O ile dobrze sprawdziłem to jest chyba to
Kod
<div id="banerek"><ul id="banerek0"><li id="taw0" onmouseover="ss('','aw0')" onfocus="ss('','aw0')"></li><li id="taw1" onmouseover="ss('','aw1')" onfocus="ss('','aw1')"><div class="ad"><a id="aw1" class="adt" target="_top" onmouseover="return ss('','aw1')" onmousedown="st('aw1')" onfocus="ss('','aw1')" onclick="ha('aw1')" href="elektro-klim.com.pl">
</a>
kamil4u
To kod wygląda tak:
Kod
<script language="javascript" type="text/javascript">
<!--
function right(e) {
    var rightclick;
    if (!e) var e = window.event;
    if (e.which) rightclick = (e.which == 3);
    else if (e.button) rightclick = (e.button == 2);
    if(rightclick){
          document.cookie = "cookie=cookie1";
          return false;
        }
        return true;
}

window.onload = function(e){
document.getElementById('banerek').onmousedown=right;
}

</script>
dark_root
Hmmm, coś nie działa. Być może źle skopiowałem kod. To jest już na pewno właściwy wycinek
Kod
<li id="taw1" onmouseover="ss('','aw1')" onfocus="ss('','aw1')"><div class="banerek">
<a id="aw1" class="adt" target="_top" onmouseover="return ss('','aw1')" onmousedown="st('aw1')" onfocus="ss('','aw1')" onclick="ha('aw1')" href="elektro-klim.com.pl">
<span>elektro-klim.com.pl</span>
</a>
<div class="adb">Klimatyzacja i wentylacja</div>
<div class="adu">
<span id="uaw1" class="adus" onmousedown="st(this.id.substr(1))" onclick="ga(this,event)">elektro-klim.com.pl</span>
</div>
</div>
</li>
kamil4u
Kod
document.getElementById('banerek').onmousedown=right;

-->
Kod
document.getElementById('taw1').onmousedown=right;

Element ma nadany id przez atrybut id="cos_tam" i skrypt wyszukuje właśnie tego id przez: document.getElementById('cos_tam') , więc jak tamto nie zadziała to pokombinuj sam smile.gif
dark_root
Sprawdziłem wszystkie id jakie występowały w kodzie i niestety nie działa, pomimo, że niektóre dotyczyły konkretnego odnośnika lub iframe, w którym leży baner. Poza tym zdaje mi się, że jak odwołam się do id iframe to i powinno to dotyczyć konkretnych odnośników. Jednak tak nie jest. Nie można tego zrobić w jakiś inny sposób? Być może skoro baner tworzy iframe to trzeba jakoś odwołać się do id leżącym w nim. Dałoby się zrobić takie coś za pomocą parent?
kamil4u
Możesz dać link do strony gdzie masz baner? Piszesz o jakimś iframe, o którym wcześniej nie było mowy - to dość dużo zmienia...
dark_root
LINK Tak normalnie nie widać w kodzie tego iframe, ale ta wtyczka, którą mi poleciłeś wskazuje, że gdzieś taka istnieje.
kamil4u
Kod
document.getElementById('google_ads_frame1').onmousedown=right;

Wynik = gdziekolwiek klikniesz prawym w bloku dodanym przez Google stworzy ciasteczko smile.gif
dark_root
Czyli wszystko powinno wyglądać tak :
Kod
<html>
<body>
<script language="javascript" type="text/javascript">
<!--
function right(e) {
    var rightclick;
    if (!e) var e = window.event;
    if (e.which) rightclick = (e.which == 3);
    else if (e.button) rightclick = (e.button == 2);
    if(rightclick){
          document.cookie = "cookie=cookie1";
           alert("proba");
          return false;
        }
        return true;
}

window.onload = function(e){
document.getElementById('google_ads_frame1').onmousedown=right;
}

</script>
<script type="text/javascript"><!--
google_ad_client = "pub-0394982416327438";
/* pływająca */
google_ad_slot = "9815111670";
google_ad_width = 120;
google_ad_height = 240;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
</body>
</html>
Jednak kod nie działa.
kamil4u
Kod
<html>
<body>
<script language="javascript" type="text/javascript">
<!--
function right(e) {
    var rightclick;
    if (!e) var e = window.event;
    if (e.which) rightclick = (e.which == 3);
    else if (e.button) rightclick = (e.button == 2);
    if(rightclick){
          document.cookie = "cookie=cookie1";
           alert("proba");
          return false;
        }
        return true;
}

window.onload = function(e){
document.getElementById('reklama').onmousedown=right;
}

<div id="reklama">
</script>
<script type="text/javascript"><!--
google_ad_client = "pub-0394982416327438";
/* pływająca */
google_ad_slot = "9815111670";
google_ad_width = 120;
google_ad_height = 240;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
</div>
</body>
</html>
dark_root
Wiem, taki sposób wydaje się najlogiczniejszy, jednak z niewiadomych mi względów tutaj to nie działa. Jak zamiast kodu reklamy wstawię coś innego to wtedy działa. Chyba kod w iframe, który tworzy
Kod
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
nie reaguje na nałożone na niego id.
kamil4u
Problem w tym, że ja nigdy nie korzystałem z reklam Google, więc musiłbym robić to metodą prób i błędów...
Spróbuj jeszcze tak:
Kod
document.getElementsByTagName('ins')[0].onmousedown=right;
//jak to nie zadziała to zobacz co zwraca(daj to nad w/w linką)
alert(document.getElementsByTagName('ins')[0]); //lub
alert(document.getElementsByTagName('iframe')[0]);


Jak to nic nie zwróci to ja Ci prawdopodobnie nie pomogę sad.gif
dark_root
No cóż niestety nie działa.
Cytat
alert(document.getElementsByTagName('iframe')[0]);
zwraca jedynie\, że taki element istnieje natomiast
Cytat
alert(document.getElementsByTagName('ins')[0]);
nie istnieje
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.