为什么我的jquery代码在IE9中工作但在IE8中不工作?

时间:2011-09-26 05:53:32

标签: javascript jquery internet-explorer fancybox

<script>
            $(document).ready(function() {
                $("#various2").fancybox({
                    'width': 800,
                    'height': 570,
                    'type':'iframe'
                });
            });
</script>

我在IE8和7中遇到错误但在IE9中没有错误

  

对象不支持属性或方法'fancybox'

错误就在这一行

$("#various2").fancybox({

我的脚本在</body>

之前位于底部
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js" defer="defer"></script>
        <script>!window.jQuery && document.write(unescape('%3Cscript src="js/libs/jquery-1.5.1.min.js"%3E%3C/script%3E'))</script>
        <script src="js/plugins.js" defer="defer"></script>
        <script>
        $(document).ready(function() {
            $("#various2").fancybox({
                'width': 800,
                'height': 570,
                'type':'iframe'
            });
        });
        </script>

3 个答案:

答案 0 :(得分:2)

您在jQuery库上使用defer,这意味着它可能在jQuery代码本身之前没有加载。

由于您的脚本位于</body>之前的页面底部,因此无需延迟加载它们,因为页面的其余部分已经加载。

答案 1 :(得分:1)

我想,你应该调试defer =“defer”部分。不同的IE版本可能会以不同的方式解释它,导致在解析正文脚本后解析js libs。

答案 2 :(得分:1)

内联脚本标记不支持defer,因此只要遇到它们就会立即执行。由于您的外部脚本具有defer,因此将来会在某个任意点加载。因此,您的内联脚本将(几乎)始终在外部脚本下载并运行之前执行。