我在Rails应用程序中启用了Turbo-link:
<script type="text/javascript" language="javascript" src="//cdn.datatables.net/1.10.0/js/jquery.dataTables.min.js"></script> <script type="text/javascript" language="javascript" src="//cdn.datatables.net/plug-ins/be7019ee387/integration/bootstrap/3/dataTables.bootstrap.js"></script> <script type="text/javascript" charset="utf-8"> var ready = function() { setTimeout(function() { $('#table-products').dataTable(); }, 100); }; $(document).on('ready, page:change', ready); </script>
通常,我会得到错误消息,即.dataTable()函数未定义,而刷新可以解决该问题。但是,刷新并不总是令人满意,因此我添加了100ms的setTimeout以等待CDN中的js加载。
到目前为止,我的开发环境中没有发现任何问题,但是我担心如果客户端速度慢,js将无法在100ms内完成加载。我想知道是否有更好的方法来解决此问题,例如检查两个js文件是否已加载,类似于$(document).ready for DOM。
谢谢!
我在Rails应用程序中具有以下JavaScript块,并且启用了Turbo-link:
实际上有一个gem for this。它非常易于使用,并带有自举样式选项。这比您拥有的更为优雅,因为它不依赖CDN,而是利用Rails资产管道。
尝试
我能找到的最优雅的方法是将所有cdn链接移动到中的布局页面,以便所有库都将被加载和缓存以提供整个用户体验。