Вэб-дадаткі становяцца ўсё больш і больш як "нармальныя" настольныя прыкладанні. Вядома, яны ўсё больш і больш функцыянальнымі, але гладкі інтэрфейс актаў галоўную ролю. Такім чынам, мы перацягвання, autocompletition, і многае іншае. Многія з тых, карысныя ўласцівасці, атрымалі магчыма толькі з дапамогай AJAX.
Гэтая старонка, аднак, ідзе не пра AJAX (ці любым іншым модным словам). Гаворка ідзе аб даволі просты метад ўводу карыстальнікам - кола мышы. Я лічу, што зараз будзе цяжка знайсці мыш без колы. Пераважная большасць карыстальнікаў прывыклі да кола кіравання для пракруткі спісаў, маштабаванне і г.д. Замест некалькіх вэб-прыкладанняў, аднак, зрабіць разумны выкарыстанне колы мышы. Гэтая старонка, каб даць вам агульную інфармацыю аб апрацоўцы колы мышы-спароджаных падзеямі ў мове праграмавання JavaScript.
Ніжэй прыводзіцца анатаваны JavaScript код, які павінен растлумачыць магію ззаду колы мышы спароджанай падзеямі. Існуе таксама версія просты для капіявання і ўстаўкі.
/** Гэта высокага ўзроўню функцыі.
* Яна павінна рэагаваць на Delta быць больш і менш за нуль.
*/
function handle(delta) {
if (delta < 0)
…;
else
…;
}
/** Апрацоўшчык падзей для падзеі мышы колы.
*/
function wheel(event){
var delta = 0;
if (!event) /* Для IE. */
event = window.event;
if (event.wheelDelta) { /* IE/Opera. */
delta = event.wheelDelta/120;
/** У Opera 9, Delta адрозніваецца знакам па параўнанні з IE.
*/
if (window.opera)
delta = -delta;
} else if (event.detail) { /** Mozilla выпадку. */
/** У Mozilla, знакі Delta з'яўляецца іншы, чым у IE.
* Акрамя таго, Delta дзеліцца на 3.
*/
delta = -event.detail/3;
}
/** Калі Delta роўная нулю, справіцца з гэтым.
* У асноўным, Delta зараз станоўчым, калі кола пракручваецца ўверх,
* і адмоўным, калі кола пракручваецца ўніз.
*/
if (delta)
handle(delta);
/** Прадухіленне дзеянні па змаўчанні выкліканых колы мышы.
* Гэта можа быць непрыгожай, але мы працуем скруткі як-то
* Ва ўсякім разе, так што не турбуйцеся тут..
*/
if (event.preventDefault)
event.preventDefault();
event.returnValue = false;
}
/** Код ініцыялізацыі.
* Калі вы выкарыстоўваеце свой уласны код кіравання падзеямі, змяняць яго па меры неабходнасці.
*/
if (window.addEventListener)
/** DOMMouseScroll для Mozilla. */
window.addEventListener('DOMMouseScroll', wheel, false);
/** IE/Opera. */
window.onmousewheel = document.onmousewheel = wheel;

У кодзе, прыведзеным вышэй, ёсць " handle "функцыю, якая, вядома, прызначаны для напісаны вамі. Як вы заўважылі, яна займае ад параметра, Delta. Яна завецца так, таму што колы мышы не мае абсалютнай сістэмы, і нам застаецца толькі захапіць пракруткі дэльт, то ёсць кут змены колы.
Практычна, вы толькі павінны сачыць за станоўчыя і адмоўныя значэння дэльты. Гэтыя выпадкі на фота злева.
Калі Delta дадатная, кола прагорткі ўверх. У адваротным выпадку, гэта было пракручваць ўніз.
Адзначым, што ў дадатках, пракрутка ўверх звычайна азначае, старонка пракручваецца ўніз і г.д.
Вы маглі б задацца пытаннем, што будзе фактычныя значэння дэльты быць. На самай справе, код вышэй наладжваецца такім чынам, што вы павінны атрымаць -1 або +1 ў 99% усіх выпадкаў. Хоць, напрыклад, я бачыў ± 3 у Firefox, калі вы вылучыце вельмі хутка. Хтосьці ў Digg паведамілі дэльце 14, і Джэфры Круз атрымалася атрымаць 76 на яго трекпад Powerbook.:-) Вядома, гэта залежыць ад адчувальнасці, якія вы ўстанавілі для вашай мышы. Існуе таксама тонкасці ў Firefox (па крайняй меры): калі вы пачынаеце пракруткі колы хутка, а затым націснуць правай кнопкай мышы на меню, вялікае значэнне дэльты паведамляецца, напрыклад, 30.
Роберт Гёрл піша аб сваім вопыце на сафары, MacOS X: "Для прагляду адной сваёй + -0.1, калі вы выкінулі яго хутчэй, каштоўнасці становяцца больш. Гэта з-за мышы Mac OS '/ кола-паскарэнне. Вы пераязджае / ўключыць яго адзін раз, яна рухаецца / скруткі 1 піксель. Тады вы перасоўвае / ператварыць яго ў тры разы хутка і яна рухаецца / спаўняецца 30 пікселяў "Ён таксама піша пра Camino, які заснаваны на Gecko, той жа рухавік, што Firefox выкарыстоўвае:" гэтак жа, як Safari (+ - 0,3 да +-бясконцасць), які здзіўляе мяне, так як яна заснавана на тым жа рухавічку, як Firefox, які паказвае толькі + -2,666666 нягледзячы на хуткасць. "
Вы таксама можаце ўбачыць тэставую старонку, а таксама доўга тэставую старонку, гэта значыць з палосамі пракруткі - што паказвае, як прадухіленне паводзін работ па змаўчанні.
Я напісаў першую версію гэтага кода ў студзені 2006 года. У той час, Firefox і Internet Explorer 6 былі падтрымліваюцца толькі браўзэры. Пажылыя Internet Explorer версіі не працуюць. Дзякуючы Кейн Бартон для справаздачнасці, што гэта працуе з Firefox 1.0.7 (так магчыма з 1,0).
Я хацеў бы падзякаваць Жан-Люк Milot за ўклад нататкі аб тым, як зрабіць код працаваць у Opera 9. Гэтая версія оперы з'яўляецца адносна новым (па стане на ліпень 2006 года); папярэднія версіі оперы не падтрымлівае кола мышы. Я таксама ўдзячны Юрій Чайковський (Юрый Чайкоўскі), якія паказваюць на тое, што ў новай версіі оперы (па крайняй меры ад 9,20 і вышэй) у вас больш няма, каб інвертаваць знак дэльты. Так паводзіны такое ж, як і ў Internet Explorer. Я трохі турбаваўся аб сумяшчальнасці са старымі версіямі оперы (хоць опера гвалтоўна рэкамендуе сваім карыстальнікам абнаўляць раз новая версія выходзіць), але праз некаторы час праходзіць я выдалю умоўны код, які быў напісаны спецыяльна для Opera.
Акрамя таго, дзякуючы Эндру Шырэр, Дорыян і Джэфры Круз за ўказанне на тое, што код працуе ў Safari. Андрэй згадвае версіі 2.0.4, але я не ўпэўнены, пра больш ранніх версій. Маркус Rothenbacher напісаў мне кажуць, што Konqueror (прынамсі да версіі 3.5.4) не мае падтрымкі колы мышы.
Прадухіленне паводзіны код па змаўчанні пастаўляецца з phpspot.org і Ёхан Сундстрем. Вы можаце бачыць, як іх код працуе ў доўгі тэставай старонкі (г.зн. з палосамі пракруткі). Тым не менш, ён працуе ў IE / Firefox. Варта таксама працуе ў Оперы, пачынаючы з версіі 09/02. (Дзякуй Ярка Rantavuori для ўказваць на гэта.)
Карысна, аднак, адзначыць, што Opera, Safari і Firefox ўключаюць аўтаматычнага абнаўлення сістэмы, якія падкажуць карыстальнікам абнавіцца да новай версіі браўзэра як толькі яна вызваляецца, так што вы можаце быць гатовыя да таго, што ўсё больш і больш карыстальнікаў інтэрнэту будзе браўзэрах, для якіх гэты код колы мышы працуе.
Кола мышы ў цяперашні час працуе на: (з ранняй версіі вядомых на працу)
Не падтрымліваецца браўзэрамі: (ні адна з існых версія падтрымлівае кола мышы)
(Некалькі "не" С.)
Калі вы ведаеце, больш практычным і цікавыя прыклады, пішыце мне спасылку.
Спадзяюся, што гэта было карысна для вас. Вы можаце мне пра гэта, калі ён быў.
Popular Links