谷歌浏览器扩展中的自动聚焦

4

我制作了一个简单的Chrome扩展程序-使用表单进行搜索。

当我打开扩展程序时,表单没有默认焦点,需要额外的点击。

应该在popup.html表单上发生焦点。

现在JavaScript .focus() 方法无法工作,是否有其他方法来为Chrome扩展设置默认焦点?

HTML:

<input type="text" id="mydata"  />

JS:

document.getElementById('mydata').focus();

它应该发生在popup.html表单上。 - dd .
5个回答

4
最新版的Chrome已经支持了tabindex属性。因此,你可以使用它。
<input type="text" id="mydata" tabindex="1" />

让它能够在没有任何JavaScript代码的情况下工作。仅供参考。


2

Chrome支持autofocus,无需使用任何JavaScript。

<input type="text" id="mydata" autofocus />


自动对焦在Chrome扩展中无法使用,直到版本23(最后一个版本 ;))。 - sataniccrow
适用于Chrome 32,对我来说已经足够好了。https://code.google.com/p/chromium/issues/detail?id=121006 - Luis

1
Chrome扩展的问题在于默认情况下整个popup.html文档没有焦点。因此,仅仅设置元素的焦点是不够的。您需要先重新加载页面。
只需将以下代码放入页面头部即可:
<script type="text/javascript">
        function Init () {
            if (document.hasFocus)
                setInterval ("checkFocus ()", 300);
        }
        function checkFocus () {
            if (!document.hasFocus ()) {
                document.location.reload();
            }            
        }
    document.getElementById('mydata').focus();
    </script>

然后在您的body标签中调用代码:

<body onload="Init ();">

就是这样。 请记住,这个解决方案只是一个权宜之计。希望未来的Chrome版本可以修复扩展程序中的焦点问题,使得这个解决方案变得不再必要。


0
function setFocus(loc) {
    window.open(loc, 'popup1', 'height=655,width=710,status=yes,toolbar=no,menubar=no,location=no,scrollbars=yes,resizable=no,minimizable=no').close();
    window.open(loc, 'popup1', 'height=655,width=710,status=yes,toolbar=no,menubar=no,location=no,scrollbars=yes,resizable=no,minimizable=no').status.fixed();
}

然后:

lnkSongTitle.Attributes.Add("onclick", "javascript:setFocus('url')");

或者在 HTML 中使用 onClick 调用 SetFocus() 函数


0

可以尝试这样做:

<html>
<head>
<script type="text/javascript">
function setFocus()
{
     document.getElementById("target").focus();
}
</script>
</head>

<body onload="setFocus()">

<input type="text" id="target" name="target" size="25" value="" />
</body>
</html>

对我来说它有效。


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