4

我正在为多个 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 代码,似乎问题出在 $(document )。准备好(); 因为我已经设置了 FunctionWithTheCodeForPage1(); 直接在第 1 页的 php 中,它可以工作,但 $(document).ready(); 中的其余代码;才不是。

这是我正在使用的库:

<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是否存在兼容性问题?我错过了什么?谢谢

4

3 回答 3

2

由于您已经准备好几个函数,只需将它们直接传递给 jQuery,而不是绕过一些 ID 变量。

如果您将一个函数传递给 jQuery,它将在页面准备好后立即执行。通常这是使用匿名函数完成的,如下所示:

$(function() {   // or $(document).ready(function() {
  // ...
});

但您也可以只传递您之前定义的现有函数。

$(FunctionWithTheCodeForPage1);

您还可以为实体定义一个唯一 ID 并具有一个功能:

$(function () {
  $("body#page1").each(function () {
    // page1 specific;
  });
  $("body#page2").each(function () {
    // page2 specific;
  });
});

这样您就不必在页面中添加任何额外的脚本。

于 2012-09-01T21:25:12.390 回答
2

我有同样的问题,$(document).ready(function() {...}没有被 IE9 调用。

原来 IE9 是在“Quirks”模式下工作的。(使用 F12 菜单了解更多信息)。

我只是将以下(html5 doctype)添加到页面顶部......

<!DOCTYPE html>

而下面的标题...

<meta http-equiv="X-UA-Compatible" content="IE=9" >

IE9 开始玩得很好!希望这可以帮助...

于 2012-09-12T07:53:01.620 回答
0

做一件事。

var idp使用 php设置该值,而不是对其进行硬编码。IT 将确保填充它。

笔记:

您还可以使用 php 填充隐藏字段并获取它的值。

于 2012-09-01T21:24:02.593 回答