mipengine / mip-extensions

[Deprecated] MIP 组件包括官方组件和开发者自定义组件,请到 mip2-extensions 查看官方组件
https://www.mipengine.org/doc/3-widget/10-widgets.html
MIT License
116 stars 458 forks source link

关于<mip-img> #537

Closed wuhanfeiyou closed 7 years ago

wuhanfeiyou commented 7 years ago

<mip-img>的渲染方式: 就是把这个代码:

<mip-img src="http://pic.qqtn.com/up/2017-3/201703310909386985456.png"></mip-img>

最终渲染成了这样的代码:

<mip-img src="http://pic.qqtn.com/up/2017-3/201703310909386985456.png" class="mip-element mip-layout-container mip-img-loaded">
        <img class="mip-fill-content mip-replaced-content" src="http://pic.qqtn.com/up/2017-3/201703310909386985456.png">
</mip-img>

可是这样。当图片被渲染成功时候。我在用JS抓一次渲染后的mip-img里面的内容。。就会出现2张图片: http://m.qqtn.com/mipc/176401.html (这是地址)

看是不是可以解决一下这个问题。有时候我需要抓取一整块内容。中间就会包含已经渲染成功的mip-img

wupengFEX commented 7 years ago

@wuhanfeiyou 我看出现问题的mip-img渲染了两次,请问你有对部分mip-img做特殊处理吗(用js抓一次具体是什么操作)?如果有特殊处理,请提供下处理的代码

wuhanfeiyou commented 7 years ago

我没做特殊处理。就是用JS抓一次渲染后的mip-img。就好比: 事例源码:

<p><mip-img src="http://pic.qqtn.com/up/2017-3/201703310909386985456.png" class="mip-element mip-layout-container mip-img-loaded">
        <img class="mip-fill-content mip-replaced-content" src="http://pic.qqtn.com/up/2017-3/201703310909386985456.png"></p>

上面是渲染成功的mip-img的代码。 然后用JS抓取代码如下:

var imgHtml = $("p").html();

这样的话,他会把你渲染后的mip-img给完整抓出来。然后抓出来的代码如下:

<mip-img src="http://pic.qqtn.com/up/2017-3/201703310909386985456.png" class="mip-element mip-layout-container mip-img-loaded">
        <img class="mip-fill-content mip-replaced-content" src="http://pic.qqtn.com/up/2017-3/201703310909386985456.png">
</mip-img>

。然后如果再次使用imgHtml ,这个变量。就会出现mip-img里面有2张图片的问题。

wupengFEX commented 7 years ago

线下沟通结论:使用方式不当。由于站长策略原因,页面 mip-img 渲染完成之后,站长通过jquery html()获取渲染后的 mip-img html,并删除了页面中的 mip-img,最后将获取的 html 包裹一层其他 html 后插入页面。这样做的问题在于,获取的mip-img里面包含img,重新插入后 mip-img 会按照组件生命周期执行并渲染出一个另一个 img,从而出现两个img的情况。 建议按照规范的组件方式书写,插入纯净的组件(非渲染后的)。