3

何らかの理由で、popup.htmlにあるtexboxにフォーカスを設定できません。これが私がこれまでに試したことです:

popup.html:

<input type="text" id="textbox" name="aName" value="" placeholder="blah" />

popup.js:

//Attempt 1
$(function() {      
    $('#textbox').focus();
});

//Attempt 2
setTimeout(function() { $('#textbox').focus(); }, 1000);

また、オートフォーカスプロパティのみを使用して、JavaScriptを使用せずに試しました。

<input type="text" id="textbox" name="aName" value="" placeholder="blah" autofocus />

しかし、これはどれもうまくいきませんでした...何かアイデアはありますか?

ノート:

  • plugin.log()を置くと、popup.jsが呼び出されて出力が得られます
  • ポップアップは、オムニバーの横にあるアイコン(default_icon)によって起動されます
4

5 に答える 5

4

私はこれと同じ問題を抱えていました。入力に明示的なtabindexを設定することで、それを機能させることができたと思います。tabindex=1

それを試してみて、うまくいくかどうか教えてください。

アップデート

私は私のために働く非常に簡単な例があります。LinuxでChrome19を使用しています。

マニフェスト.js

{
"name": "Auto 'focus'",
    "version": "1.0",
    "manifest_version": 2,
    "description": "An extension to test setting focus",
    "browser_action": {
        "default_icon": "icon.png",
        "default_popup": "popup.html"
    }
}

popup.html

<!doctype html>
<html>
  <head>
  </head>
  <body>
    <a href="#">Link</a>
    <input type="text" id="foo" tabindex="1" />
  </body>
</html>

焦点がない場合、tabindex="1"最初はリンクに焦点が当てられます。入力要素にtabindex="1"焦点を当てます

于 2012-07-05T21:39:51.007 に答える
3

このコードは私と一緒に動作します、試してみてください、それは回避策です

<!DOCTYPE >
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Sample Extens</title>
</head>
<body style="padding: 0px; margin: 0px;" >
    <script type="text/javascript" language="javascript">
        if (location.search !== "?foo") {
            location.search = "?foo";
            throw new Error;  // load everything on the next page;
            // stop execution on this page
        }
    </script>

    <div id="Def">
        <input type="text" id="textbox" name="aName" value="" placeholder="blah" />
        <script type="text/javascript" language="javascript">
            document.getElementById("textbox").focus();
        </script>
    </div>
</body>
</html>

ここに画像の説明を入力してください

于 2012-07-05T16:07:14.317 に答える
3

最後に私が使用したのはこれです:

popup.html:

<input type="text" id="textbox" name="aName" value="" placeholder="blah" autofocus />

popup.js:

$(function() {              
    if (location.search != "?focusHack") location.search = "?focusHack";
});

TarekEl - MallahとPAEzに感謝します!!!

于 2012-07-09T18:10:24.367 に答える
1

Tarek El-Mallahのポップアップをリロードする方法は機能しますが、manifest_version:2を使用し、インラインスクリプトが許可されていないため、機能しませんでした...
http://code.google.com/chrome/extensions/manifestVersion。 html
また、これは既知の問題です....
http://code.google.com/p/chromium/issues/detail?id=111660
以下はmanifest_versionで動作するバージョンです:2....。

マニフェスト.json

{
  "name": "Browser Action PopUp focus/tab test",
  "version": "1.0",
  "description": "A test to show that on opening a popup you cant set focus and the tab index is not honored on the first select.  See, http://stackoverflow.com/questions/9070727/tab-key-not-working-in-popup-in-chrome-extension.",
  "browser_action": {
      "default_title": "Browser Action PopUp focus/tab test.",
      "default_icon": "icon.png",
      "default_popup": "popup.html"
  },
  "manifest_version" :2
}

popup.html

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <script src="popup.js"></script>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Sample Extens</title>
</head>
<body style="padding: 0px; margin: 0px;" >
    <div id="Def">
        <input type="text" id="textbox" name="aName" value="" placeholder="blah" />
    </div>
</body>
</html>

popup.js

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

function onLoad() {
    document.getElementById("textbox").focus();
}

window.onload = onLoad;
于 2012-07-09T13:22:12.250 に答える
0

これを試して:

 autofocus="autofocus"

代わりにこれを試すこともできます:

setTimeout(
    function() { 
        if(location.search !== "?aName") {
           location.search = "?aName";
           throw new Error; 
        }
    }, 1000);
于 2012-07-05T15:07:59.480 に答える