Расширение Chrome всплывающее окно textarea focus
Кажется, я не могу вызвать focus() для текстовой области моего всплывающего окна расширений Chrome, когда он открывается / после ondomready.
у меня есть что-то подобное в popup.js:
$(document).ready(function () {
console.log($("#moped-text"));
$('textarea').focus();
$('.container').css("color", "red");
});
я ссылаюсь на это в popup.html вот так:
<html>
<head>
<link rel="stylesheet" href="css/content.css" type="text/css">
<script type="text/javascript" src="js/lib/jquery.js"></script>
<script type="text/javascript" src="js/popup.js"></script>
</head>
<body>
<div class="container">
<textarea name="newText"></textarea>
</div>
</body>
Css-change работает, focus() нет!
Когда я отлаживаю всплывающее окно и набираю $('textarea'). Focus(); в консоли все работает. Также события, добавленные в готовый обратный вызов, связаны успешно.
Любая помощь высоко ценится!
5 ответов
Я до сих пор не знаю, почему фокус не установлен на первом месте, но простой тайм-аут делает свою работу:)
setTimeout(function() {
$('#moped-text').focus();
}, 500);
Обходной путь для Chrome 18 (находится здесь)
if(location.search !== "?foo")
{
location.search = "?foo";
throw new Error; // load everything on the next page;
// stop execution on this page
}
Работает для меня!
Я использую это, чтобы сосредоточиться.
Мой элемент имеет "автофокус" в качестве атрибута. Когда форма загружена, элемент с атрибутом "автофокус" получает фокус.
.directive ('autofocus', ['$ timeout', function ($ timeout) {return {restrict: 'A', link: function ($ scope, $ element) {$ timeout (function () {$ element [0]).focus(); }); } } }])
У вас есть div с классом "контейнер", а не id. Так что используйте это вместо:
$('.container').css("color", "red");
Вы можете просто использовать <textarea name="newText" autofocus></textarea>
,