prefetch.js 829 B

1234567891011121314151617181920212223242526
  1. function prefetchByLink(url) {
  2. return new Promise(function(resolve, reject) {
  3. var link = document.createElement('link');
  4. link.rel = 'prefetch';
  5. link.href = url;
  6. link.onload = resolve;
  7. link.onerror = reject;
  8. document.head.appendChild(link);
  9. });
  10. }
  11. function prefetchByXhr(url) {
  12. return new Promise(function(resolve, reject) {
  13. var req = new XMLHttpRequest();
  14. req.open('GET', url, (req.withCredentials = true));
  15. req.onload = function() {
  16. req.status === 200 ? resolve() : reject();
  17. };
  18. req.send();
  19. });
  20. }
  21. var link = document.createElement('link');
  22. var supportLink =
  23. (link.relList || {}).supports && link.relList.supports('prefetch');
  24. exports = supportLink ? prefetchByLink : prefetchByXhr;
  25. module.exports = exports;