2011-09-13 64 views
4

以下代码在Firefox中正常工作,但在IE中不起作用。我已经尝试了对头文件和脚本调用字符串的各种调整,但是没有任何东西会使IE运行脚本。 IE中也关闭所有安全性。Internet Explorer 8中的JQuery问题

下面的代码有什么问题吗?

<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

你的代码是不是真的jQuery的,这是直接的JavaScript,但在这里,你的问题是W3C标准要求的ID,以字母开头(见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(); 
}); 

Tha t在IE9中工作,所以我认为它也应该在8工作。测试版本在这里:http://jsbin.com/ipezey/edit#javascript,html

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

+1

+1。另外,在jQuery中,你不需要整个窗口的'load'事件,你可以开始在文档ready事件中操作DOM。 :) – Shef

+0

非常真实的,我想我会写这个作为他的代码严格的jQuery翻译,但是,我通常只会使用'$(function(){'... – n00dle

+0

无效,但谢谢 –

-1

你根本没有使用jQuery。

使用这个符号:

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

,而不是所有的JavaScript

+1

这个不会解决问题,“1”根本就不是一个有效的id标准, – oezi

+0

还是没有效果的, –

0

,你可以阅读on this question

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

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

作为旁注:正如其他人所说,你实际上并没有在这里使用jqery,但这不是问题。

+0

还是没有效果,但是谢谢 –

0

第一张:id="1"is not a valid ID

二:由于您使用jQuery的,我建议你使用jQuery(!):

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

这将运行$('#that-form-element').focus();一旦网页(DOM)已准备就绪。

+0

还是没有效果但是谢谢 –

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 
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

+1这似乎很可能是事业的一部分! – n00dle