Проблема JQuery в Internet Explorer 8 - PullRequest
4 голосов
/ 13 сентября 2011

Следующий код отлично работает в Firefox, но не в IE. Я пробовал различные настройки для заголовка и строки вызова скрипта, однако ничто не заставит IE запускать скрипты. Также в IE отключена вся безопасность.

Что-то не так в следующем коде?

    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Smartube</title>
    <link href="css/default.css" rel="stylesheet" type="text/css" />
    <script src="jquery.js" type="text/javascript"></script>
    <script src="tubeutil.js" type="text/javascript"></script>
    <script src="init.js" type="text/javascript"></script>
    <script type="text/javascript">
    function formfocus() {
    document.getElementById('1').focus();
    }
    window.onload = formfocus;
    </script>
    </head>

    <body>



<div class="wrapper">
    <img class="displayed" src="gfx/sb.png">
    <form class="blocks" action="" method="get">
        <p><input type="text"  class="search" id="1" /></p>
        <p><input type="Submit" class="btn" value="" /></p>
        <ul class="reset autocomplete"></ul>
    </form>

    <ul class="reset videos"></ul>

</div>
    </body>
    </html>

Ответы [ 6 ]

6 голосов
/ 13 сентября 2011

Ваш код на самом деле не jQuery, это простой javascript, но ваша проблема здесь в том, что стандарт W3C требует, чтобы идентификатор начинался с буквы (см. http://www.w3schools.com/tags/att_standard_id.asp).

Вы можете написать свой скрипт как jQuery так:

function formfocus( ) {
    $('#myid').focus( );
}
$(window).load( formfocus );

РЕДАКТИРОВАТЬ: ОК, я только что проверил следующее в IE:

HTML:

<div class="wrapper">
 <img class="displayed" src="gfx/sb.png">
    <form class="blocks" action="" method="get">
        <p><input type="text"  class="search" id="my1" value="" /></p>
        <p><input type="Submit" class="btn" value="" /></p>
        <ul class="reset autocomplete"></ul>
    </form>

    <ul class="reset videos"></ul>

</div>

JS:

$(document).ready( function ( ) {
  $('#my1').focus( );
});

Это работает в IE9, поэтому я думаю, что это должно работать и в 8. Тестовая версия здесь: http://jsbin.com/ipezey/edit#javascript,html

Кроме того, согласно ответу тридцати точек, эта тестовая версия имеет тип документа HTML 5, а ваша версия - нет. Это может быть корнем вашей проблемы.

1 голос
/ 13 сентября 2011

Что-то не так в следующем коде?

Одна вещь кажется мне неправильной, но я никак не могу понять, является ли это причиной ваших проблем (я не вижу остальной части вашего JavaScript).

Вам не хватает действительного типа документа, поэтому Internet Explorer находится в режиме Причуды , что очень плохо!

Добавьте это как самую первую строку:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
0 голосов
/ 13 сентября 2011

id Указывает уникальный идентификатор для элемента в документе HTML.

Правила именования:

Must begin with a letter A-Z or a-z
Can be followed by: letters (A-Za-z), digits (0-9), hyphens ("-"), underscores ("_"), colons (":"), and periods (".")
Values are case-sensitive
0 голосов
/ 13 сентября 2011

Первое: id="1" не является действительным идентификатором .

Второе: поскольку вы используете jQuery, я бы посоветовал вам использовать jQuery (!):

$(function(){
  $('#that-form-element').focus();
});

Это запустится $('#that-form-element').focus();, как только страница (DOM) будет готова.

0 голосов
/ 13 сентября 2011

как вы можете прочитать по этому вопросу

Жетоны ID и NAME должны начинаться с буквы ([A-Za-z]) и могут сопровождаться любым числомбукв, цифр ([0-9]), дефисов ("-"), подчеркиваний ("_"), двоеточий (":") и точек (".").

поэтому «1» не является действительным идентификатором.измените этот идентификатор на «id1» или «searchfield», чтобы скрипт работал во всех браузерах.

как sidenote: как говорили другие, вы на самом деле здесь не используете jqery, но это не проблема.

0 голосов
/ 13 сентября 2011

Вы вообще не используете jquery.

используйте эту запись:

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

вместо всего вашего javascript

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