Category Archives for javascript

As3 mousewheel olaylarının tarayıcı sayfasını da etkimesi sorunu

Liam O’Donnell blog yazılarını okurken karşılaştığım ilginç bir yazıyı paylaşmak isterim.Yazıda as3 ile beraber yüzleşmemiz gereken gayet can sıkıcı bir sorun irdelenip çözüm bulunmuş.Çoğumuzun gerçekte farkında olup es geçtiğimiz bu sorun ise as3 ile hazırlanmış gömülü flash movielerinde mousewheel tuşunu kullanırken flash ile birlikte tarayıcı sayfasının da scroll ediyor olması.Bu sorunu test etmek için buradan iki ayrı flash uygulamayı tarayıcınızda çalıştırabilirsiniz.

Daha önceki as2 kodlarımızda bu sıkıntıyla karşılaşmama nedenimiz as2 flash movieleri focus durumundayken mousewheel olaylarını tarayıcıya bildirmemesiydi.İnternet tarayıcılarıma yaptığım denemeler sonucunda firefox 3.5.5 ve internet explorer 7,8 tarayıcılarında çözüm gayet başarılı çalışıyor. Opera 10.20 Alpha ve Safari 4.04 sürümlerinde maalesef değişen bir şey yok.

As3 ile beraber gelen en can sıkıcı sorunlar listelense popup blocker ve wmode transparant sorunlarının ardısıra muhtemelen bu sorun gelecektir.Neyseki bu sorun için de artık gayet basit bir çözüm yolu var.Liam sorunu çözerken popup blocker ve wmode transparant sorunlarındaki çözüm yoluna benzer bir yol takip etmiş.Çözüm yolu ExternalInterface sınıfı üzerinden tarayıcı sayfasına dinamik javascript kodları ekleyip bu javascript kodları yardımıyla istenmedik tarayıcı davranışını ortaadan kaldırmayı denemiş.
Adobe resmi olarak henüz çözüm üretmediği bu soruna geçici bir çözüm üretmek için Liam’ın MouseWheelTrap adını verdiği classı uygulamamız başlarken bir kez yürütmemiz yeterli.

?View Code ACTIONSCRIPT
1
2
import com.spikything.utils.MouseWheelTrap;
MouseWheelTrap.setup(stage);

Tarayıcıya eklenen javascript kodu ise :

?View Code JAVASCRIPT
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
var browserScrolling;
function allowBrowserScroll(value) {
   browserScrolling = value;
   }
function handle(delta) {
   if(!browserScrolling) {
      return false;
      }
   return true;
   }
function wheel(event) {
   var delta = 0;
   if(!event) {
      event = window.event;
      }
   if(event.wheelDelta) {
      delta = event.wheelDelta / 120;
      if(window.opera) {
         delta =- delta;
         }
      }
   else if(event.detail) {
      delta =- event.detail / 3;
      }
   if(delta) {
      handle(delta);
      }
   if(!browserScrolling) {
      if(event.preventDefault) {
         event.preventDefault();
         }
      event.returnValue = false;
      }
   }
if(window.addEventListener) {
   window.addEventListener('DOMMouseScroll', wheel, false);
   }
window.onmousewheel = document.onmousewheel = wheel;
allowBrowserScroll(true);
Get Adobe Flash playerPlugin by wpburn.com wordpress themes