2012-03-10 3 views
4

Кажется, что я не могу вызвать focus() на текстовом поле моего всплывающего окна Chrome, когда он открывается/после ondomready.chrome extension popup textarea focus

у меня есть что-то подобное в 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> 

устанавливаемыми сотовыми-изменения работы, фокус() не !

Когда я отлаживаю всплывающее окно и нажимаю $ ('textarea'). Focus(); в консоли он работает. Также события, добавленные в готовом обратном вызове, успешно связаны.

Любая помощь высоко оценена!

+0

это разве работает для меня ни: [Auto Focus в расширение Google Chrome] (HTTP: // StackOverflow .com/questions/6594064/auto-focus-in-google-chrome-extension) – hc2p

ответ

3

я до сих пор не знаю, почему фокус не установлен на первом месте, а просто тайм-аут делает работу :)

setTimeout(function() { 
    $('#moped-text').focus(); 
}, 500); 
+3

Это всегда работало для меня, но в Chrome 18 (только что сделанный на стабильном канале) это не работает. Даже если я установил таймаут до 1000 мс ничего не происходит. Вы испытываете одно и то же, и если да, возможно, вы знаете об одном решении/обходном пути для текущей ситуации? – pimvdb

+1

То же самое в Chrome 20 – Soviut

0

У вас есть div с классом "container" not id. Поэтому используйте это вместо:

$('.container').css("color", "red"); 
+0

спасибо hamczu! Я изменил свой вопрос. Css не проблема, ее фокус(). – hc2p

-1

Вы можете просто использовать <textarea name="newText" autofocus></textarea>.

+1

это тоже не работает. похоже, заблокирован в хромовых расширениях .. :(или что-то еще получает фокус после этого – hc2p

3

Обход для Chrome 18 (найдено here)

if(location.search !== "?foo") 
{ 
    location.search = "?foo"; 
    throw new Error; // load everything on the next page; 
        // stop execution on this page 
} 

Работает для меня!

+0

Ничего себе, магия. Я положил это на вершину своего всплывающего окна. js и voila! Спасибо! –

+0

действительно действительно запутанный ... но он работает – fehrlich

0

Я использую это для фокусировки.

Элемент «автофокусировка» в качестве атрибута. Когда форма загружается, элемент с атрибутом «автофокус» получает фокус.

.directive ('автофокусировка', [ '$ тайм-аута', функция ($ таймаут) { возврата { ограничение: 'A', ссылка: функция ($ области действия, $ элемент) {$ тайм-аут (функция() {$ элемент [0] .focus(); });} } }])

Смежные вопросы