我正在为多个php页面使用单个js文件。在每个php结束时,我创建一个javascript变量来识别它,如下所示:
<div>
.
.
.
</div>
<script>
var idp = 1;
</script>
</body>
</html>
然后在我的js文件中我有:
$(document).ready(function() {
.
.
.
if (idp == 1) {
FunctionWithTheCodeForPage1();
}
if (idp == 2) {
FunctionWithTheCodeForPage2();
}
});
它在Chrome和Firefox上工作正常但在IE9中有时它似乎没有获得idp变量的值,有时它不执行我在“if”语句之前的一些jquery代码,似乎问题是$(文件)。就绪();因为我已经设置了FunctionWithTheCodeForPage1();直接在第1页的php内部工作,但其余的代码在$(document).ready();没有。
这是我正在使用的libreries:
<script type='text/javascript' src="Scripts/Popcalendar.js"></script>
<script type='text/javascript' src='Scripts/jquery-latest.js'></script>
<script type='text/javascript' src='Scripts/jquery.lightbox_me.js'></script>
<script type='text/javascript' src='Scripts/MyJS.js'></script>
此问题不会一直发生,有时页面加载正确,有时会出现此错误,但主要是错误。 IE9是否存在兼容性问题?我错过了什么?感谢
答案 0 :(得分:2)
由于你准备好了几个函数,只需将它们直接传递给jQuery,而不是绕过一些ID变量。
如果将函数传递给jQuery,它将在页面准备好后立即执行。通常这是使用匿名函数完成的,如下所示:
$(function() { // or $(document).ready(function() {
// ...
});
但您也可以传递您之前定义的现有函数。
$(FunctionWithTheCodeForPage1);
您还可以为实体定义唯一ID,并且只有一个功能:
$(function () {
$("body#page1").each(function () {
// page1 specific;
});
$("body#page2").each(function () {
// page2 specific;
});
});
这样您就不必在页面中添加任何额外脚本。
答案 1 :(得分:2)
我遇到了同样的问题,IE9没有调用$(document).ready(function() {...}
。
原来,IE9正在“Quirks”模式下工作。 (使用F12菜单查找更多信息)。
我只是将以下内容(html5 doctype)添加到页面顶部...
<!DOCTYPE html>
以下标题......
<meta http-equiv="X-UA-Compatible" content="IE=9" >
IE9开始播放得很好!希望这会有所帮助...
答案 2 :(得分:0)
做一件事。
使用php设置var idp
值而不是硬编码。 IT部门将确保填充它。
注意:
您还可以使用php填充隐藏字段并获取其值。