Internet Explorer 8中的JQuery问题

4
以下代码在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

你的代码其实不是 jQuery,而是纯JavaScript。但你在这里遇到的问题是W3C标准要求ID以字母开头(请参见http://www.w3schools.com/tags/att_standard_id.asp)。

你可以将你的脚本改写为jQuery格式,例如:

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

EDIT: 好的,我刚在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

另外,根据thirtydot的答案,这个测试版本有一个HTML 5 doctype,而你的版本没有。这可能是你问题的根源。


1
此外,在 jQuery 中,您不需要等待整个窗口的load事件,您可以在文档'准备就绪'事件上开始操作DOM。 :) - Shef
非常正确,我本来想将他的代码严格翻译成jQuery的形式,但是实际上,我通常只会使用$(function( ) { ... - n00dle

1
以下代码有什么问题吗?
有一件事让我感到不对劲,但我无法知道它是否是您问题的原因(我看不到您的JavaScript的其余部分)。
您缺少有效的文档类型声明,因此Internet Explorer处于 Quirks Mode,这非常糟糕!
请将以下内容添加为第一行:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

0

首先:id="1"不是一个有效的ID

其次:既然您正在使用jQuery,我建议您使用jQuery(!):

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

当页面(DOM)准备好时,这将运行$('#that-form-element').focus();


0

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

正如您可以在此问题中阅读到的那样

ID和NAME标记必须以字母([A-Za-z])开头,可以后跟任意数量的字母、数字([0-9])、连字符(“-”)、下划线(“_”)、冒号(“:”)和句点(“.”)。

因此,“1”不是有效的ID。将该ID更改为“id1”或“searchfield”,以使脚本在所有浏览器中正常工作。

顺便说一句:正如其他人所说,您实际上并没有在这里使用jqery,但这不是问题。


-1

你根本没有使用jQuery。

请使用这种表示法:

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

使用 JavaScript 替代


1
这并不能解决问题,“1”根据标准来说不是一个有效的ID。 - oezi

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