mipengine / mip2

MIP (移动网页加速器)通过优化网页JS、控制资源加载顺序,达到加速网页的效果。
https://www.mipengine.org/
MIT License
184 stars 49 forks source link

mip 组件标签放在 JS 引入的后面,在组件 JS 中获取不到组件内部的 dom #489

Closed zoumiaojiang closed 5 years ago

zoumiaojiang commented 5 years ago

BUG 描述

mip 组件标签放在 JS 引入的后面,在组件 JS 中获取不到组件内部的 dom

<script src="https://c.mipcdn.com/static/v2/mip.js"></script>
<script src="https://c.mipcdn.com/static/v2/mip-stats-baidu/mip-stats-baidu.js"></script>
<mip-stats-baidu>
  <script type="application/json">
    {
      "token": "some token string"
    }
  </script>
<mip-stats-baidu>

但是在 mip-stats-baidu.js 中的 build 回调中通过 this.element.querySelector('script[type="application/json"]') 这样的方式获取不到 script DOM

当改变顺序之后,就符合预期,如下:

<mip-stats-baidu>
  <script type="application/json">
    {
      "token": "some token string"
    }
  </script>
<mip-stats-baidu>
<script src="https://c.mipcdn.com/static/v2/mip.js"></script>
<script src="https://c.mipcdn.com/static/v2/mip-stats-baidu/mip-stats-baidu.js"></script>

期望结果 期望无论 mip 标签在哪,都能正常取到 mip 标签内的内容 dom

yenshih commented 5 years ago

组件注册在 document interactive 后(等效于 defer),暂时解决