如何使用HTML导入有条件地导入modernizr?

时间:2014-04-23 18:01:11

标签: modernizr polymer

我希望有条件地用聚合物进口一些东西。如何建立如下的东西。

<html>
  <head>
  <link rel="import" href="polyfill-geolocation.html">
  </head>
  <body>
  <script>
    // I can use geo
    navigator.geolocation.getCurrentPosition(callback);
  </script>
  </body>
</html>

modernizr-geolocation.html会有条件地检查和加载。

<script>
  if (!navigator.geolocation) {
    // load the geolocation-polyfill.js
    // and defer execution of the html import till it is ready
    // then execute in order.        
  }
</script>

如果我不需要它,我不想下载polyfill而且我不想在我的主中等待一个oncomplete事件的条件回调。也许这是不可能的?

1 个答案:

答案 0 :(得分:4)

  

推迟执行html导入,直到它准备好然后按顺序执行。

如果您愿意在脚本标记中同步加载(并评估)geo-location-polyfill.js,它将阻止执行将来的脚本标记并使您的示例正常工作。

最好在某种ready事件上关闭文档脚本,然后让事情异步进行。

有关动态导入的一些信息:

您可以通过强制创建<link>代码并将其附加到<head>来动态使用导入。

导入将在加载后立即解析。如果要捕获加载完成,链接标记将触发load事件。

或者,您可以使用Polymer.import方法:

Polymer.import(arrayOfUrls, completionCallback);

示例:

Polymer.import(['a.html', 'b.html'], function() { // a and b have loaded now });