vue-wechat-title.js 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. (function () {
  2. function install (Vue) {
  3. var setWechatTitle = function (title, img) {
  4. if (title === undefined || window.document.title === title) {
  5. return
  6. }
  7. document.title = title
  8. var mobile = navigator.userAgent.toLowerCase()
  9. if (/iphone|ipad|ipod/.test(mobile)) {
  10. var iframe = document.createElement('iframe')
  11. iframe.style.display = 'none'
  12. // 替换成站标favicon路径或者任意存在的较小的图片即可,支付宝小程序引用默认空白的base64图片会有安全警告
  13. var _img = /alipay/.test(mobile) ? img : (img || 'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7');
  14. _img && iframe.setAttribute('src', _img)
  15. var iframeCallback = function () {
  16. setTimeout(function () {
  17. iframe.removeEventListener('load', iframeCallback)
  18. document.body.removeChild(iframe)
  19. }, 0)
  20. }
  21. iframe.addEventListener('load', iframeCallback)
  22. document.body.appendChild(iframe)
  23. }
  24. }
  25. Vue.directive('wechat-title', function (el, binding) {
  26. setWechatTitle(binding.value, el.getAttribute('img-set') || null)
  27. })
  28. }
  29. if (typeof exports === 'object') {
  30. module.exports = install
  31. } else if (typeof define === 'function' && define.amd) {
  32. define([], function () {
  33. return install
  34. })
  35. } else if (window.Vue) {
  36. Vue.use(install)
  37. }
  38. })()