IE7 z-index Hatası ve Çözümü

IE7’ye uygun tasarımlar dökmeye çalışıyorsanız, bu tarz sorunlarla muhakkak karşılaşıyorsunuzdur.. Bir türlü z konumunu yükselttiğiniz değer bir diğer nesnenin üzerine çıkmıyordur.. Bu sorunun sebebi z-index verdiğiniz nesnenin üst nesnelerinden birisine position uygulamanızdan kaynaklıdır. Yani bu mantıkla baktığımızda IE7 z-index uygulanacak nesnenin üst nesnelerinde position olmasını kabul etmiyor. Küçük bir örnek vermek gerekirse;

Burada hakkımda menüsünün üzerine gelince açılan bir alt menüsü mevcut.. Şuan tüm tarayıcılarda arama kutusu açılan menünün üzerine çıkmış durumda.. Şimdi z-index değerini açılan ul nesnesine verelim.. Örneğin z-index: 1 ekleyip deneyelim;

Evet şuan IE7 hariç diğer tüm tarayıcılarda (muhtemelen) açılır menü yukarıya çıktı. Ancak IE7’de ne hikmetse hala altta ???? Bunun sebebi en başta da dediğim gibi ul’nin üst nesnesi olan li’de position değeri olmasından kaynaklanıyor. Burada li’nin position değerini silemeyeceğimize göre ul’ye verdiğimiz z-index değerini li’ye vermemiz gerekecek. Yani IE7 ve diğer tarayıcılar için uyumlu hali;

Bir başka iğrenç IE hatasında görüşmek üzere ????

MooTools ile Tooltip Örneği Yapalım

MooTools kütüphanesini kullanarak kolayca tooltip örneği nasıl yapabiliriz, bu konuda sizlere bundan bahsetmek istiyorum.

MooTools kütüphanesini kullanarak kolayca tooltip örneği nasıl yapabiliriz, bu konuda sizlere bundan bahsetmek istiyorum.

Adım 1

Öncelikle mootools kütüphanesini sayfamıza dahil edelim. Eğer yok ise aşağıdaki adresten temin edebilirsiniz;
http://mootools.net/download

Adım 2

Gerekli dosyalarımızı oluşturalım;
– index.html
– style.css
– custom.js
– mootools.js

Adım 3

Index.html dosyamızda standart html etiketlerimizi yazalım. Ve daha sonra gerekli dosyalarımızı head etiketi içerisinde çağıralım.

<!DOCTYPE HTML>
<html lang="en-US">
<head>

	<meta charset="UTF-8">
	<title>Erbilen.NET</title>
	
	<!-- style -->
	<link rel="stylesheet" href="style.css" />
	
	<!-- scripts -->
	<script type="text/javascript" src="mootools.js"></script>
	<script type="text/javascript" src="custom.js"></script>
	
</head>
<body>

</body>
</html>

Adım 4

Şimdi tooltip örneği için span kullanacağız.. Ve data nitelikleri ile bilgileri alacağız. Bu yüzden şöyle bir örnek kod ekleyebiliriz body’e;

<div class="text">
	Burası benim <span class="tooltip" data-text="İpucu" data-direction="left">tooltip</span> örneğim :)
</div>

Burada data-text tooltip’te gözükecek değer, data-direction ise tooltip’in yönü olacak.

Adım 5

custom.js dosyamızı açalım ve sayfa hazır olduğunda bizde hazırız diyelim;

window.addEvent('domready', function(){
	/* .. */
});

Adım 6

Mootools ile DOM’da bir nesneyi seçmek için bir çok yol vardır.. Eğer çoklu seçip yapılacaksa iki dolar ($$) işareti ile yapılır. Ve nesnelere olay atamak içinde 2 tanımlı metod vardır.. Bunlar addEvent ve addEvents‘dır. Tahmin edebileceğiniz üzere 2.si çoklu olay atama için kullanılıyor. Bizde bunu kullanacağız.. Kısaca tooltip nesnemiz için fare üzerine geldiğinde ve fare üzerinden gittiğinde olaylarını tanımlayacağız.

window.addEvent('domready', function(){
	$$('.tooltip').addEvents({
		mouseenter: function(){
		
		},
		mouseleave: function(){
			
		}
	});
});

Burada mouseenter fare üzerine geldiğinde mouseleave ise fare üzerinden gittiğinde çalışacaktır.

Adım 7

Şimdi mouseenter olayı içerisinde kodlarımızı yazmaya devam edelim.. İlk olarak data değerlerimizi alalım;

var text = this.get('data-text'),
	direction = this.get('data-direction');

Ve şimdide tooltip için gerekli nesnemizi oluşturalım.. Ve sınıf değeri ile yazı değerini ekleyelim;

this.toolTip = new Element('span', {
	'class' : 'tooltip_text ' + 'direction_' + direction,
	'html' : text
});

Burada gördüğünüz gibi 2 sınıf ataması yaptım.. 2. sınıf ataması belirlediği yöne göre direction_YÖNDATASI şeklinde kullanılabilecek.. Böylece okların yönünü belirleyebilmemiz daha kolaylaşır. Ve fark ettiyseniz var ile oluşturmadım.. this.toolTip dedim. Bunun sebebi ise diğer olayda bunu kullanabilmemdir.. Bu şekilde mouseleave‘de bu nesneye erişip üzerinde işlem yapabilirim. Ve html ile data-text değerini nesneme atadım. text ilede atayabilirdim ancak o zaman html etiketleri çalışmazdı ????

Şimdi oluşturduğumuz nesneyi mevcut span’ımızın içerisine ekleyelim;

this.toolTip.inject(this);

Artık kodlarınızı çalıştırdığınızda span’ın üzerine her geldiğimizde İpucu yazdığını görebilirsiniz. devam ediyoruz.. ????

Adım 7

JS kodlarımız bir kenarda kalsın, şimdide css kodlarımızı yazalım..

.tooltip {
	position: relative
}
.tooltip_text {
	font: 12px/17px Arial;
	background-color: #222;
	padding: 5px 10px;
	border-radius: 5px;
	position: absolute;
	z-index: 1;
	color: #fff;
	text-align: center
}

Burada ilk olarak kapsayıcı nesneye position: relative verdik. Çünkü içerisindeki tooltip nesnesi absolute yani diğer nesnelerden bağımsız olması gerek. Ve diğer birkaç özellik ekledik. Bu bu şekilde kalsın, JS kodlarımıza geri dönebiliriz ????

Adım 8

Şimdi tooltip’in fade tarzı açılması için öncelikle opacity değerini 0’a düşürelim.. Ve daha sonra tween kullanarak animasyon süresini belirleyip fade ile açtıralım;

this.toolTip.setStyle('opacity', 0).set('tween', { duration: 400 }).fade('in');

Evet, eğer test ederseniz gayet tatlı olduğunu görebilirsiniz ????

Şimdi yön işlemlerinde css tanımlaması yapmak için öncelikle tooltip’in genişlik ve yüksekliğini bulmamız gerekiyor. Bunun için getSize() metodunu kullanabiliriz.

var size = this.toolTip.getSize(),
	width = size.x + 10,
	height = size.y + 10;

Burada ben + 10px daha ekledim. Bunun sebebide biraz daha uzakta kalmalarını sağlamak için. Dilerseniz siz eklemek zorunda değilsiniz ????

Adım 9

Şimdi yön işlemlerini yapacağız.. Toplu CSS işlemleri için setStyles() metodunu kullanıyoruz. İlk if koşulumuz şöyle olacak;

if ( direction == 'left' ){
	this.toolTip.setStyles({
		'left': '-' + width + 'px',
		'top': '50%',
		'margin-top': '-' + ((height / 2) - 5) + 'px'
	});
}

Eğer yön sol olarak belirlenmiş ise css kodlarımız bu şekildedir. Öncelikle left değerini tooltip’in genişliği + 10px kadar sola çekiyoruz.. Daha sonra yukarıdan ortalayıp yüksekliğin yarısı kadar margin ile yukarı çekiyoruz..

Yukarı için

else if ( direction == 'top' ){
	this.toolTip.setStyles({
		'top' : '-' + height + 'px',
		'left' : '50%',
		'margin-left' : '-' + ((width / 2) - 5) + 'px'
	});
}

Sağ için

else if ( direction == 'right' ){
	this.toolTip.setStyles({
		'right' : '-' + width + 'px',
		'top' : '50%',
		'margin-top' : '-' + ((height / 2) - 5) + 'px'
	});
}

Aşağı için

else if ( direction == 'bottom' ){
	this.toolTip.setStyles({
		'bottom' : '-' + height + 'px',
		'left' : '50%',
		'margin-left' : '-' + ((width / 2) - 5) + 'px'
	});
}

Evet neredeyse bitti sayılır.. CSS kodlarını tek tek anlatmıyorum, mantık ilkinde olduğu gibi hepsinde aynıdır. Şimdi artık mouseenter olayı ile işimiz bitti.. Sıra geldi mouseleave olayı çalıştığında mevcut tooltip örneğimizi kaldırmaya. Bunun için destroy() metodunu kullanacağız.

this.toolTip.destroy();

Ve fade efektinde hızlı yapıldığında sorun çıkıyor. Bunu engellemek için animasyonu fare üzerinden çekildiğinde durduracağız.

this.toolTip.get('tween').stop();

Evet işte bu kadar ???? Şimdi CSS’e geri dönebiliriz!

Adım 10

Son olarak css’de yöne göre ok şekillerini yapacağız.. Bunun için tooltip_text öncesine content ekleyip şurada olduğu gibi ok şekillerini yapacağız.

.tooltip_text:after {
	content: '';
	border: 6px solid transparent;
	position: absolute
}
/* son yön için */
.tooltip_text.direction_left:after {
	border-left-color: #222;
	top: 50%;
	margin-top: -6px;
	right: -12px
}
/* sağ yön için */
.tooltip_text.direction_right:after {
	border-right-color: #222;
	top: 50%;
	margin-top: -6px;
	left: -12px
}
/* yukarı yön için */
.tooltip_text.direction_top:after {
	border-top-color: #222;
	left: 50%;
	margin-left: -6px;
	bottom: -12px
}
/* aşağı yön için */
.tooltip_text.direction_bottom:after {
	border-bottom-color: #222;
	left: 50%;
	margin-left: -6px;
	top: -12px
}

Adım 11

Ek olarak bir özellik daha ekleyebiliriz.. data-width özelliği.. Bu şu durumlar için lazım olabiliyor, kapsayıcı nesne küçük ise, tooltip nesneside en fazla onun genişliği kadar oluyor.. Bu yüzden tooltip için standart bir width belirleyebiliriz.. Bunuda data-width=”200″ şeklinde belirleyeceğiz.. Buna göre ise JS kodlarımıza şunu ilave edelim. Ve bu ilave işlemini inject‘ten hemen sonrasında yapalım ????

if ( w = this.get('data-width') ){
	this.toolTip.setStyle('width', w + 'px');
}

Evet tamamdır..

Tebrikler, mootools’u daha iyi anlamak adına basit bir örnek daha hazırlamış olduk. Demoyu inceleyebilir, kaynak kodlara aşağıdan ulaşabilirsiniz.

İndir

http://yadi.sk/d/vuOEUcO472K4Y

CSS calc() Fonksiyonu

Bilmeyenler için css‘de özellikle modern dökümler yaparken çokça kullandığım calc() fonksiyonundan bahsetmek istiyorum..

Nedir?

Css’de matematik hesapları yapmak için kullanılır.. İçerisinde değerler toplanabilir, çıkartılabilir, bölünebilir, çarpılabilinir..

Nerede, Ne İçin Kullanılır?

Aslında kullanım yeri çook fazladır.. Öyle ki bu css fonksiyonunu sonradan keşfetmem bile benim için üzücü oldu ???? En basit örnek vermek gerekirse.. Sağ ve Sol adlı iki nesnemiz olsun.. Sağ bölümün genişliği sabit, sol bölümün ise yüzdeli.. Buna göre bu 2 nesneyi kolayca nasıl yanyana getirebiliriz? Elbette cevap belli .

Birkaç Basit Örnek Kullanımı

div {
    width: calc(100% - 200px); /* 100%'ün 200px küçüğü */
}
a {
    font-size: calc(2 * 15px);
    /* önek kullanımı */
    font-size: -webkit-calc(2 * 15px)
}

Tarayıcı Desteği

Internet Explorer – IE9 ve üzerisi için geçerlidir.
Firefox – 15.0 sürümünden öncesi için -webkit- öneki ile birlikte kullanılıyor. Ancak 15.0 sonrası için kullanılmasına gerek yok. (Not: Şuanki sürümü 24.0 siz düşünün)
Chrome – 25.0 sürümünden öncesi için -webkit- öneki ile birlikte kullanılıyor. Ancak 25.0 sonrası için kullanılmasına gerek yok. (Not: Şuanki sürümü 30.0 siz düşünün)
Safari – 6.0 ile birlikte kullanılmaya başlanıldı. Ancak -webkit- öneki olmak şartıyla. Şuan 7.0 sürümünde önek olmadan kullanılabilinir.
Opera – 15.0 sürümü ile birlikte geldi. Önek olmadan kullanılabilinir.
Daha fazla tarayıcı desteği için tıklayın!

Dış Kaynaklar

Şunlarada bakmanızda fayda var;
https://developer.mozilla.org/en-US/docs/Web/CSS/calc
http://www.w3.org/TR/css3-values/#calc

Mootools ile Özel Selectbox Yapımı

Şuan evimden çoook uzaklarda olduğum için ne yazık ki videolu eğitim hazırlayamıyorum.. Ancak mootools’a başladığım şu günlerde bir yandanda bilgilerimi aktarmaya çalışacağım.. Bu yazımda sizlerle adım adım özelleştirilebilir selectbox örneği yapmayı öğreneceğiz..Şuan evimden çoook uzaklarda olduğum için ne yazık ki videolu eğitim hazırlayamıyorum.. Ancak mootools’a başladığım şu günlerde bir yandanda bilgilerimi aktarmaya çalışacağım.. Bu yazımda sizlerle adım adım özelleştirilebilir selectbox örneği yapmayı öğreneceğiz..

Adım 1

Öncelikle mootools kütüphanesi mevcut değil ise, aşağıdaki bağlantıdan sıkıştırılmış halini indirelim;
http://mootools.net/download

Adım 2

Şimdi sırasıyla şu dosyaları oluşturalım;
– index.html
– style.css
– custom.js

Adım 3

html sayfamızın içerisine standart html taglarımızı girelim.. Style dosyamızı çağıralım.. Ve mootools kütüphanesi ile custom.js dosyamızıda sayfamıza dahil edelim..

<!DOCTYPE HTML>
<html lang="en-US">
<head>

	<meta charset="UTF-8">
	<title></title>
	
	<!-- style -->
	<link rel="stylesheet" href="style.css" />
	
	<!-- scripts -->
	<script type="text/javascript" src="mootools-core-1.4.5-full-nocompat-yc.js"></script>
	<script type="text/javascript" src="custom.js"></script>
	
</head>
<body>

</body>
</html>

Adım 4

html sayfamıza özelleştirmek için bir adet selectbox ekleyelim..

<select name="sehir" class="select">
	<option value="0">Şehir Seçin</option>
	<option value="Eskişehir">Eskişehir</option>
	<option value="Ankara">Ankara</option>
	<option value="Adana">Adana</option>
	<option value="İzmir">İzmir</option>
</select>

Adım 5

custom.js dosyamızı açalım.. Ve sayfamız hazır olduğunda bizde hazırız diyelim;

window.addEvent('domready', function(){
	
	/* .. .. */

});

Adım 6

Şimdi sınıfı select olan bütün selectbox’ları seçip each ile döngüye sokalım.

$$('select.select').each(function(elem, index){
    /* .. .. */
});

İlk olarak selectbox’ın opacity değerini 0 yaparak görünmez hale getirelim;

elem.setStyle('opacity', 0);

Şimdi selectbox’ın kapsayıcı nesnesini oluşturalım;

var selectBoxContent = new Element('div', {
	'class': 'selectBoxContent'
});

Oluşturduğumuz kapsayıcı nesneyi önce dom’a ekliyoruz.. Yani select nesnesinin hemen öncesine ekliyoruz.

selectBoxContent.inject(elem, 'before');

Ve dom’a eklediğimiz kapsayıcı nesnenin içerisine şimdi selectbox’ımızı ekleyebiliriz;

elem.inject(selectBoxContent);

f12’yi basıp developer tools’dan baktığınızda şöyle bir görüntü var ise buraya kadar her şeyi doğru yaptınız demektir ????

Seçilen select değerini gösterecek text nesnesini oluşturalım, içerisine ise seçili select değerini atayalım;

var selectText = new Element('span', {
	'class' : 'selectText',
	'text' : elem.getSelected().get('text')
});

Ve şimdi bu text nesnesini select’ten hemen öncesine ekliyoruz.

selectText.inject(elem, 'before');

Son bir adım kaldı, oda select değeri değiştiğinde bunu yakalayıp text nesnesine yazdırmak.. Onun içinse şöyle bir kod yazacağız;

elem.addEvent('change', function(){
	selectText.set('text', elem.getSelected().get('text'));
});

Evet, bu kadar koddan sonra custom.js dosyamızın son hali şöyle olmalı;

window.addEvent('domready', function(){
	
	$$('select.select').each(function(elem, index){
		elem.setStyle('opacity', 0);
		var selectBoxContent = new Element('div', {
			'class': 'selectBoxContent'
		});
		selectBoxContent.inject(elem, 'before');
		elem.inject(selectBoxContent);
		var selectText = new Element('span', {
			'class' : 'selectText',
			'text' : elem.getSelected().get('text')
		});
		selectText.inject(elem, 'before');
		elem.addEvent('change', function(){
			selectText.set('text', elem.getSelected().get('text'));
		});
	});

});

Buradan sonrasını ise css ile halledeceğiz..

Adım 7

İlk olarak bir reset.css yazmamak için sevgili eric meyer’in reset.css’ini kullanabiliriz.. Bunun için aşağıdaki bağlantıyı kullanabilirsiniz;
http://meyerweb.com/eric/tools/css/reset/

Adım 8

Son olarak selectbox’ımıza biraz şekil verelim;

/*__ SELECTBOX __*/
.selectBoxContent {
	position: relative;
	display: inline-block;
	*display: inline;
	zoom: 1;
	background: #f7f7f7 url(https://cdn1.iconfinder.com/data/icons/cc_mono_icon_set/blacks/16x16/br_down.png) no-repeat 175px;
	border: 1px solid #ddd;
	border-top-color: #aaa;
	height: 30px;
	width: 200px
}
.selectBoxContent span.selectText {
	position: absolute;
	padding-left: 8px;
	font: 12px/30px Arial;
	color: #666
}
.selectBoxContent:hover span.selectText {
	color: #111
}
.selectBoxContent select {
	width: 100%;
	height: 30px;
	cursor: pointer;
	position: relative;
	z-index: 1
}

Evet, tebrikler.. Başarılı bir şekilde basit ve kullanışlı bir selectbox örneği hazırladık ????

İndir

http://yadi.sk/d/5VGBleen6uVtV

JavaScript ile Ayın Kaç Çektiğini Bulmak

DatePicker eklentisi yazarken böyle bir şey lazım oldu.. Lazım olunca da çözüm aradık, bulduk.. Sizede bir gün lazım olur ise eğer şöyle yapıyorsunuz;

var ayKacCekti = new Date(2013, 02, 0).getDate();
alert(ayKacCekti);

Yani kısaca gün değerine 0 yazmanız o ayın toplam gün sayısını size veriyor ????

Not: Genelde ay terbiyesizce bir şey çekiyor ????

Php’de Zaman Ayarlı Session’lar

Her zaman olmasada bazen zamanı gelince session’ların otomatik sonlanmasını isteriz.. Ama her session için değil, bazı özel durumlar için olabilir.. Bu gibi durumlara basit bir çözüm bulabiliriz.. İşte o basit çözümün kodları;

<?php
 
 session_start();

 /* eğer vaktiGeldi session'ı yok ise sessionları oluştur */
 if ( !isset($_SESSION['vaktiGeldi']) ){
   $_SESSION['vaktiGeldi'] = time() + 20;
   $_SESSION['kullanici_adi'] = 'Tayfun Erbilen';
 }

 /* session zamanı geçmiş ise belirli session'ları yok et */
 if ( time() > $_SESSION['vaktiGeldi'] ){
   unset($_SESSION['kullanici_adi']);
   // ya da session_destroy()
 }

 echo 'Hoşgeldin, <strong>'.$_SESSION['kullanici_adi'].'</strong>';

?>

Şimdi burada yapılan şey şu.. Session oluştururken bir tane zamanın belirtileceği session oluşturulacak.. time() + 20 dememin açıklaması Mevcut zamandan 20 saniye sonrası demek oluyor.. Ve kontrol ederkende mevcut zaman eğer vakit session’ından büyük ise istediğimiz sessionları sonlandırıyoruz..

Ki budurumda 20 saniye sonra kullanici_adi adlı session‘ım kullanılamaz hale gelecektir.. Bu şekilde zaman ayarlı session’lar oluşturup gerektiğinde kullanabilirsiniz..

JavaScript ve jQuery’de Fonksiyon Varlık Kontrolü

Bazı durumlarda eklenti kullanmamız gerekir.. Ancak eklentiye her sayfada ihtiyaç olmadığı için sadece ihtiyaç olan sayfada eklenti dosyalarını yükletiriz.. Ancak genel js dosyası tek olduğu için, diğer sayfalarda bu eklenti olmadığından eklenti tanımından sonraki kodlar çalışmaz hale gelir.. Bu gibi durumlarda o kod satırını eğer eklenti var ise çalıştırmak en sağlıklı çözüm olacaktır.. Peki bunu nasıl yapacağız? Öncelikle bu jQuery eklentisi olacağından jQuery’nin bize sunmuş olduğu $.isFunction() fonksiyonunu kullanacağız.. Ve şu şekilde kontrol işlemini yapacağız;

if ( $.isFunction($.fn.eklentiAdi) ){
    /* eklentiAdi adlı eklentiyi uygulamak için gerekli kodlar */
}

Ya da şöylede kontrol edebiliriz;

if ( $().eklentiAdi ){
    /* eklentiAdi adlı eklentiyi uygulamak için gerekli kodlar */
}

Bu şekilde eğer böyle bir eklenti var ise o kod bloğu çalışacaktır ve altındaki kodları etkilemeyecektir.. Bunun bir benzeride jquery fonksiyonlarıdır.. Onun içinde kontrol şöyledir;

$.test = function(){}
if ( $.isFunction($.test) ){
    alert('test fonksiyonu var!');
}

javascript ile fonksiyon kontrolü için ise;

function test(){}
if ( typeof test == 'function' ){
    alert('fonksiyon mevcut!');
}

Ya da;

function erbilen(){}
if ( window.erbilen ){
    alert('erbilen fonksiyonu mevcut!');
}

Kolay gelsin ????

Döngü Kullanmadan 1’den 10’a Kadar Saydırmak (Mantık Yürütmek)

Yazılım dillerinin esnekliği yazan kişinin mantığına bağlıdır.. Sadece örnek vermek için böyle bir konu yazma gereği duydum.. Ben harika bir yazılımcı değilim, ama yerinde mantık kullanabilen birisiyim.. En basit örneğinide size bu konuda göstereceğim.. Normal şartlarda 1’den 10’a kadar saydırmak istersek ne yapmamız gerekir? Bir döngü ile yapabiliriz mesela..

<?php
	for ( $i = 1; $i <= 10; $i++ ) echo $i.'
'; ?>

Peki şimdi aynı işlemi döngü kullanmadan yapmak istersek nasıl yapacağız? Eminim daha bir çok farklı yolu vardır ancak en basit 2. farklı yolu şöyle olabilir;

<?php
	function sayi($sayi){
		echo $sayi.'<br />';
		if ( $sayi < 10 ) sayi(++$sayi);
	}
	sayi(1);
?>

Sonuç olarak her iki örnekte 1’den 10’a kadar sayacaktır.. Yani demem o ki, yapamadığınız noktalarda mantığınızı zorlayın.. Herşeyin mantıklı bir çözümü muhakkak vardır, önemli olan o çözüme nasıl ulaşabileceğinizi bilmenizdir.. Bu bir nasihat değil, sadece naçizane bir tavsiyedir ????

Fareyi Takip Eden Gizli Reklam Nasıl Yapılır?

Bu konuyu yazsam mı yazmasam mı bilemedim.. Normal şartlarda böyle şeyleri hiç sevmem, ama gerçekten iyi bir projeniz var ve hak ettiğiniz ilgiyi göremiyorsanız böyle şeylere baş vurabilirsiniz.. Tabi banlanırsanız ben karışmam  Aslında mantık o kadar zor değil.. Öncelikle bir reklam alanı olmalı.. Yani;

<div class="ads">
	.. reklam kodları ..
</div>

Evet şimdi CSS ile diğer nesnelerden bağımsız hale getirelim;

.ads {
	position: absolute;
	top: 0;
	left: 0;
	display: none
}

Evet şimdide jquery kütüphanesini sayfamıza dahil ettikten sonra pencerede fare hareket ettiğinde bunu yakalayıp reklam divini konumlandıralım..

$(function(){
	$(window).on('mousemove',function(e){
		var height = ($('.ads').height()/2),
		width = ($('.ads').width()/2);
		$('.ads').css({
			top: e.pageY - width,
			left: e.pageX - height
		}).show();
	});
});

Şimdi reklama tıklandığını yakalayamıyoruz, ancak bunun için basit bir işlem yapabiliriz.. Örneğin 7 saniye sonra bir fonksiyon çalıştırıp reklam divini kapatabiliriz, tıklamasa bile kapanır.. Yani jquery kodlarına şunu ilave edelim;

setTimeout(function(){
	$('.ads').remove();
}, 7000);

Evet şimdi son olarak reklam aldığınız sitenin sizi hemen banlamaması için basit çözümler getirelim.. Örneğin günde 1 kez gösterelim bu fare reklamını.. Cookie oluşturalım.. Yani kısaca yukarıda yazdığımız tüm kodları aşağıdaki kodlar içerisine alalım..

<?php if ( !isset($_COOKIE[md5('ads')]) ){ ?>
.. diğer kodlar buraya ...
<?php setcookie(md5('ads'), true, time() + (60 * 60 * 24)); } ?>

Sonuç? Artık sitenize bir ziyaretçi girdiğinde eğer 7 saniye içinde fare ile herhangi bir yere tıklar ise otomatik reklamınıza tıklamış olacak.. Ve 1 gün boyunca bir daha bu reklam gözükmeyecek.. (Tabi cookie’ler aktif olması gerekir tarayıcıda)..

Not: İnternet Explorer’da feci sıkıntıları var, en kötü ihtimalle ie’den girilmiş ise bu işlemi yaptırmayınız  

Böyle Reklam Koyanlardan Nasıl Kurtulurum?

Tarayıcı eklentisi olan AdBlock kurarak ????

Reklamlardan Kurtulanları Nasıl Tespit Ederim?

Çektiğim şu video’ya göz atarak tespit edebilirsiniz;
http://www.erbilen.net/ders/javascript-ile-adblock-tespiti