砌体不在IE 7中工作.SCRIPT500:'元素'是未定义的masonry.pkgd.min.js,第9行第6316字符

时间:2013-06-18 16:56:37

标签: javascript jquery jquery-masonry

我对最新版本的砌体有一个奇怪的问题。以前工作但是对于一个新项目我下载了jQuery和Masonry的最新版本,一切正常。除非IE7因插件中的错误而无法加载Masonry库,所以看起来好像。

我在IE7控制台中遇到此错误:

enter image description here

这是我的测试文件的完整代码,所以任何人都可以快速重现它:

<!DOCTYPE html>
<html>
<head>
<title>Test</title>
<script type='text/javascript' src='jquery-1.10.1.min.js'></script>
<script type='text/javascript' src='masonry.pkgd.min.js?ver=3.0.0'></script>
</head>
<body>
Test
</body>
</html>

我错过了一些明显的东西还是Masonry不再与IE7兼容?我在网站上没有找到任何相关内容。

如您所见,我正在使用jQuery 1.10.1和Masonry 3.0.0

编辑:我尝试使用非最小化版本,我得到了

SCRIPT5009: 'Element' is undefined
masonry.pkgd.js, line 914 character 1

很奇怪,因为那条线上没有任何叫Element的东西..

这是一段masonry.pkgd.js:

911    /*jshint browser: true, strict: true, undef: true, unused: true */
912    /*global define: false */
913    
914    ( function( global, ElemProto ) {
915    
916      'use strict';
917    
918      var matchesMethod = ( function() {
919        // check un-prefixed
920        if ( ElemProto.matchesSelector ) {
921          return 'matchesSelector';
922        }

2 个答案:

答案 0 :(得分:0)

Read about the library support on their FAQ page

  

Masonry的浏览器支持是什么?

     

Masonry适用于 IE8 + 和现代浏览器,包括移动浏览器   在iOS和Android上。

答案 1 :(得分:0)

如果这对任何人都有用,那么Masonry真的不支持IE7 - 在github上还有一个关于这个问题的修复问题 - https://github.com/desandro/masonry/issues/356。 我仍然希望阻止javascript完全破坏IE7用户,所以我添加了以下内容(如果你使用砌体作为jQuery插件,这会有所帮助):

if(navigator.appVersion.indexOf("MSIE 7.")!=-1{
      $.fn.masonry = function() { };
}else{
      <!-- ORIGINAL MASONRY CODE GOES HERE -->
      ...
      ...
}

这将在IE7的情况下创建一个名为Masonry的空jQuery插件,并且会阻止脚本破坏页面的整个javascript(当然,Masonry stub在这种情况下什么都不做但至少我们防止了错误和其他东西仍然可以工作)