Что-то вроде этого должно достичь вашей цели:
function RecurseDirs
{
oldIFS=$IFS
IFS=$'\n'
for f in "$@"
do
-----your activity here-----
if [[ -d "${f}" ]]; then
cd "${f}"
RecurseDirs $(ls -1 ".")
cd ..
fi
done
IFS=$oldIFS
}
Основная проблема в том, что по умолчанию браузер не делает холст «фокусируемым». Лучший обходной путь, который я мог придумать, - это установить tabindex
на холсте:
$("#canvas")
// Add tab index to ensure the canvas retains focus
.attr("tabindex", "0")
// Mouse down override to prevent default browser controls from appearing
.mousedown(function(){ $(this).focus(); return false; })
.keydown(function(){ /* ... game logic ... */ return false; });
Если по какой-либо причине вы не можете установить tabindex
, вы также можете сделать холст "фокусируемый", установив для contentEditable
значение true:
// Add content editable to help ensure the canvas retains focus
$("#canvas").attr("contentEditable", "true")
$("#canvas")[0].contentEditable = true;
Это решение, которое я придумал изначально, но, на мой взгляд, оно немного сложнее, чем опция tabindex
.
Также следует учитывать, что браузеры обычно выделяют редактируемые элементы содержимого рамкой. Некоторых пользователей это может оттолкнуть. К счастью, вы можете избавиться от этого с помощью этого фрагмента CSS:
#canvas { outline: none; }
I ' Мы тестировали оба решения в Chrome 3/4/5 и FireFox 3.0 / 3.5 / 3.6 в Windows XP, Mac OSX и Linux. Вот рабочий пример: http://xavi.co/static/so-canvas-keyboard.html
Try event.preventDefault();
. Also there are keypress
, keydown
, and keyup
events... you could try each of them to see which works.