ng-srcset图像最初不会间歇性地在IE11中显示

时间:2015-10-19 03:54:42

标签: angularjs internet-explorer-11 srcset picturefill

页面加载时不会在IE11上显示任何图像,但在我们间歇性地调整浏览器大小(1/3加载)时会相应地刷新它们。我们无法使用任何其他浏览器复制此内容。 srcset通过静态内容自行运行。

Here is a Plunker example 它无法在IE11中运行。

或者快捷方便,我们正在使用的实际img html:

<img data-ng-srcset="{{::image.url}}, {{::image.url2x}}" alt="{{::image.name}}"/>

图像或周围的div 应用了任何过渡,阴影或不透明度。

html渲染得很好,角度传递并正确重写srcset属性。图像只是没有出现,只有alt标签。想知道这可能是由于它的间歇性而导致的调用堆栈问题,可能是在角度完成消息之前加载Picturefill的竞争条件。

提前干杯!

2 个答案:

答案 0 :(得分:1)

如果你在循环和特定情况下(不是你应用程序的所有图像上)使用PictureFill,可以调用一个函数,在最后一个项目加载后直接从HTML启动PictureFill(这不是最好的做法,但修复IE11问题):

<picture><!-- Your image --></picture>
<span ng-if="$last">
    {{ controllerAlias.launchPictureFill() }}
</span>

答案 1 :(得分:0)

作为解决方案遇到了这个问题:http://tech.endeepak.com/blog/2014/05/03/waiting-for-angularjs-digest-cycle/

var waitForRenderAndDoSomething = function() {
    if($http.pendingRequests.length > 0) {
        $timeout(waitForRenderAndDoSomething); // Wait for all templates to be loaded
    } else {
        $window.picturefill();
    }
}

$timeout(waitForRenderAndDoSomething);

博客文章描述的唯一问题就在这里,所以如果有人有更好的事情请告诉我:

  

$ http.pendingRequests应该仅用于调试目的。如果angular团队决定删除它,您可以使用此链接中建议的http拦截器实现相同的操作。