$(document).ready在IE中不起作用

时间:2009-10-13 17:05:55

标签: javascript internet-explorer jquery load

在我的页面中有两个链接,注册和登录。

现在重要的是注册。当我单击它时,它使用jquery加载函数加载.tpl文件。在这个tpl文件中,我包含一个带有<script> ofcourse的新js文件,它在safari,ff,opera和chrome中完美运行,但当然,为什么它应该在IE中工作?

所以我的问题是,我该怎么做才能让它在IE中运行?我想如果我将js放在.tpl文件中可以解决我的问题,但是如果有更好的解决方案,我想听听它。不,这没有用,所以我猜没有解决方案:D

现在我尝试了一个简单的警报,它运作得很好。

我的问题已经改变了。如果JS文件中有$(document).ready IE,则“忽略”整个脚本,但如果不存在则完美无缺。问题是我需要准备好该文件。 :D

感谢。

4 个答案:

答案 0 :(得分:3)

确保脚本标记不是以这种形式:

<script ... />

IE只接受:

<script>...</script>

答案 1 :(得分:3)

如果脚本被“忽略”,如果有$(文档)就绪,则脚本的该块中可能存在错误,并且IE设置为在出错时停止运行脚本。

尝试简化您的问题以尝试确定它。例如,将以下代码复制到一个全新的html文件中并进行试用(注意:您需要将src路径更改为jquery.js文件。)

<html>
<head>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
$(document).ready(function() {
    alert('test');
}
</script>
</head>
<body>
</body>
</html>

以上是否适合您使用IE或是否也会被忽略(再次,更新jquery.js文件的路径后)?

如果这样可行,但在您的方案中不起作用,请在IE中检查您的页面来源,了解所有内容的加载方式。我唯一一次看到$(document).ready()抛出一个错误就是当jquery.js文件没有加载到它之前或者与$()函数发生冲突时......在这种情况下你会需要noConflict()函数。

答案 2 :(得分:0)

IE认为注入脚本标记是一个安全问题。将脚本标记更改为:

document.write("<scri" + "pt src=...></scri" + "pt>");

答案 3 :(得分:0)

你确定你加载的javascript在IE中正确执行吗?也许它有一个javascript怪癖会抛出一个错误并使它看起来好像没有加载?

要测试这一点,非动态地包括javascript(包含在页面或类似内容中)并在脚本代码中设置断点并逐步执行以确保它一直执行。 Firebug将是一个很好的工具。

我意识到这是抓住稻草,但也许尝试一下?