Используйте функцию strcat
для добавления с использованием однострочного кода без использования цикла:
A={'food','banana','orange'}
A = «еда» «банан» «апельсин»
A = strcat(A,'s')
A = «продукты», «бананы», «апельсины»
,
Вот функция, которая наконец сработала
function focus_on_lightbox(seconds) {
var seconds_waited
seconds_waited = seconds
document.getElementById(lightbox_content_id).focus();
seconds_waited += 100;
if (document.getElementById(lightbox_content_id) != document.activeElement && seconds_waited < 2000)
setTimeout("focus_on_lightbox(" + seconds_waited + ");", 100);
{
}
}
Так почему же console.log, похоже, повлияла на установку фокуса? Раньше я использовал эту функцию для паузы между попытками изменения фокуса.
function pause(milliseconds) {
var dt = new Date();
while ((new Date()) - dt <= milliseconds) { /* Do nothing */ }
}
Это заставляет javascript постоянно что-то делать, и я думаю, что это не давало документу времени на рендеринг или обновление или что-то в этом роде. Кажется, что console.log снял эту блокировку и дал странице возможность сменить фокус.
Когда я изменил подходы к использованию тайм-аута для паузы между попытками, console.log больше не нужен!
Я думаю, ваша проблема заключается в вызове метода фокуса после возврата false. ваш код должен быть таким:
<a href="#"
onclick="show_lightbox();focus_on_lightbox();return false;">
show lightbox
</a>
По моему опыту, проблемы с фокусом иногда могут быть связаны со временем (например, focus () выполняется до того, как элемент будет полностью готов для фокусировки). Я предполагаю, что разметка лайтбокса создается динамически при вызове функции show_lightbox? В этом случае вы можете попробовать добавить небольшую задержку, прежде чем пытаться сфокусироваться, чтобы увидеть, проблема ли в этом, например:
setTimeout("focus_on_lightbox();", 10);
Сделайте сам элемент фокусом. В событии загрузки элемента установите тайм-аут в несколько мс и затем вызовите this.focus ();
Или попробуйте jQuery.