Chrome扩展程序弹出窗口文本框焦点

4
似乎在Chrome扩展程序弹出窗口打开/ondomready之后,我不能调用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>

css-change生效了,focus()没有生效!

当我在控制台中调试弹出窗口并输入$('textarea').focus();时,它可以工作。 此外,在ready-callback中添加的事件也成功绑定。

非常感谢任何帮助!


这对我也没用:Google Chrome扩展中的自动聚焦 - hc2p
5个回答

4
我仍然不知道为什么焦点没有在第一时间设置,但简单的超时可以完成工作 :)
setTimeout(function() {
  $('#moped-text').focus();
}, 500);

3
这在以前一直对我有效,但在Chrome 18(刚刚进入稳定通道)中不起作用。即使我将超时设置为1000毫秒也没有任何反应。您是否遇到了相同的情况,如果是这样,您可能知道当前情况的解决方案/变通方法吗? - pimvdb

3

Chrome 18的解决方法(在这里找到)

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

对我来说没问题!


哇,太神奇了。我把这个放在我的popup.js文件的顶部,然后就完成了!谢谢! - Joel Mellon

0
你的 div 使用了 class "container" 而不是 id,所以请使用以下代码:
$('.container').css("color", "red");

谢谢hamczu!我已经相应地修改了我的问题。CSS不是问题,问题在于focus()。 - hc2p

0

我使用这个来聚焦。

我的元素有一个"autofocus"属性。当表单被加载时,带有"autofocus"属性的元素将获得焦点。

.directive('autofocus', ['$timeout', function($timeout) { return { restrict: 'A', link : function($scope, $element) { $timeout(function() { $element[0].focus(); }); } } }])


-1
你可以简单地使用 <textarea name="newText" autofocus></textarea>

1
这也不起作用。在Chrome扩展中似乎被阻止了.. :( 或者之后有其他东西获得了焦点。 - hc2p

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接