Picturefull / Lazysizes:无法在IE中获得属性推送

时间:2016-10-10 07:53:28

标签: javascript html internet-explorer picturefill

我使用picturefill作为响应式图像解决方法,并且懒惰加载图像并且它工作得非常好。现在Internet Explorer(11)的控制台中存在一些错误:

Unable to get property 'push' of undefined or null reference

消息的打印屏幕: enter image description here

似乎候选人是空的或未定义的,但我无法将其固定下来,因为它可以在其他地方工作,并且在IE中的图像或HTML中也没有明显的错误。如果使用了lazysizes,则只会出现错误,而只有这种情况并非如此。

以下是我如何使用带有lazysizes的图片元素的示例:

<picture>

<!--[if IE 9]><video style="display: none;"><![endif]-->

<!-- Desktop -->
<source data-srcset="image-desktop.jpg 1x, image-desktop-2x.jpg 2x" media="(min-width: 1024px)" class="lazyload lazypreload">

<!-- Tablet -->
<source data-srcset="image-tablet.jpg 1x, image-tablet-2x.jpg 2x" media="(min-width: 704px)" class="lazyload lazypreload">

<!-- Mobile Big -->
<source data-srcset="image-mobile-big.jpg 1x, image-mobile-big-2x 2x" media="(min-width: 384px)" class="lazyload lazypreload">

<!--[if IE 9]   ></video><![endif]-->

<!-- Default Mobile -->
<img class="picturefill__image class="lazyload lazypreload" data-srcset="image-mobile.jpg 1x, image-mobile-2x.pg 2x" src="loader.gif" />

</picture>

图片填充脚本使用requireJS加载到页脚中,如下所示:

var picturefill = require('picturefill');

lazysizes脚本也会加载到页脚中,就像picturefill with requireJS一样。它是在picturefill之前加载的。

关于这里的问题是什么的任何想法?我错过了什么?

更新:看起来错误发生在这里(picturefill.js):

imageData.sets = [];

if ( hasPicture ) {
    imageData.pic = true;
    getAllSourceElements( parent, imageData.sets );
}

然后使用第二个变量作为候选者,抛出未定义的错误:

function getAllSourceElements( picture, candidates ) {
   ...

0 个答案:

没有答案