Как я могу заставить Google Chrome размещать курсор в этом элементе textarea при загрузке страницы? - PullRequest
0 голосов
/ 02 марта 2011

У меня есть простая html-страница, и когда я загружаю ее в Google Chrome, я хочу, чтобы курсор перешел в одну текстовую область.Это не работает - вот что у меня есть

<html>
    <body OnLoad="document.box.focus()">
        <textarea name="box" rows="2000" cols="80">
        </textarea>
    </body>
</html>

И, похоже, он не может понять, о каком элементе я говорю:

Uncaught TypeError: Cannot call method 'focus' of undefined

Какой правильный путьсделать это?

Ответы [ 2 ]

3 голосов
/ 02 марта 2011

Используйте id и getElementById:

<html>
    <body OnLoad="document.getElementById('theTextBox').focus()">
        <textarea id="theTextBox" name="box" rows="2000" cols="80">
        </textarea>
    </body>
</html>

Chrome не загромождает глобальное пространство имен значениями name (и глобальное пространство имен включено window, а не document).

Технически, вы можете сделать это:

<html>
    <body OnLoad="window.theTextBox.focus()">
        <textarea id="theTextBox" name="box" rows="2000" cols="80">
        </textarea>
    </body>
</html>

... потому что id s сбрасывается в глобальное пространство имен (это даже определяетсяW3C таким образом, к сожалению).Но вы можете получить коллизии в этом пространстве имен (например, если у вас есть var theTextBox;), тогда как getElementById предназначен для непосредственной работы со значениями id.

0 голосов
/ 02 марта 2011

Вы получаете это сообщение об ошибке, потому что вы не можете получить доступ к элементу DOM по имени в качестве свойства объекта document.Вы должны использовать document.getElementsByName () для доступа к массиву всех элементов, разделяющих данное имя (в вашем простом случае вы использовали бы document.getElementsByName('box')[0].focus() для доступа к единственному textarea).

В качестве альтернативы и предпочтительно вы должны установить некоторый идентификатор для этого элемента (например, <textarea id="box" rows="2000" cols="80" ...>), а затем получить доступ к элементу, используя document.getElementById () , чтобы вы всегда получали только один элемент.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...