H5页面可以引用的一些JS常用小方法

写了一些单个的小页面可以引入的常用js方法,省了自己手写的时间,需要时可以保存为js文件然后直接引用。

const jsToolsH5 = {
	/**
	 * 获取url的查询参数
	 * @param {string} param - 需要获取的参数名称
	 * @returns {string} - 返回值是一个字符串
	 */
	getUrlParam: (param) => {
		if (!param || typeof param !== 'string') {
			return ''
		} else {
			try {
				const reg = new RegExp('(^|&)' + param + '=([^&]*)(&|$)', 'i')
				const character = decodeURIComponent(window.location.search.substring(1)).match(reg)
				if (!!character && character.length > 0 && !!character[2] && character[2] != 'null') {
					return character[2]
				} else {
					return ''
				}
			} catch (error) {
				throw new Error('URL Param Error')
			}
		}
	},

	/**
	 * 把一个对象拼接成字符串
	 * @param {object} paramsObject - 需要拼接在url后边的对象
	 * @returns {string} - 返回值是一个字符串
	 */
	convertObjectToString: (paramsObject) => {
		if (!!paramsObject && paramsObject.constructor === Object && Object.keys(paramsObject).length > 0) {
			let _str = ''
			_str = Object.keys(paramsObject).reduce((prev, current, currentIndex, array) => {
				if (currentIndex === array.length - 1) {
					return prev + current + '=' + paramsObject[current]
				} else {
					return prev + current + '=' + paramsObject[current] + '&'
				}
			}, '')
			return _str
		} else {
			throw new Error('Not a Object Type')
		}
	},
    
	/**
	 * 原生JS发送http请求
	 * @param {object} params - 传入的对象
	 * @param {string} params.url - 传入对象的 url 属性,可以直接把查询参数拼接在url后边
	 * @param {string} [params.type = 'GET'] - 传入对象的 type 属性
	 * @param {*} [params.data] - 传入对象的 data 属性可以是json对象或Qs序列化之后的查询字符串等
	 * @param {string} [params.contentType] - 传入对象的 contentType 属性: application/json 或者 application/x-www-form-urlencoded
	 * @param {object} [params.header] - 其他需要添加到header里的参数
	 * @returns {promise} - 返回值是一个promise对象,需要用.then接收
	 */
	ajaxPromise: (params) => {
		return new Promise((resolve, reject) => {
			const _contentType = params && params.contentType ? params.contentType : 'application/json'
			const _data = params && params.data ? params.data : null
			const _type = params && params.type ? params.type : 'GET'
			if (_contentType === 'application/x-www-form-urlencoded' && !!_data) {
				let _reg = /^\S+=\S+/g
				if (!_reg.test(params.data)) {
					throw new Error('请先使用Qs序列化Data')
				}
			}
			const xhr = new XMLHttpRequest()
			xhr.open(_type, params.url)
			xhr.setRequestHeader('Content-type', _contentType)
			if (!!params.header) {
				for (const key in params.header) {
					const _val = params['header'][key]
					xhr.setRequestHeader(key, _val)
				}
			}
			xhr.send(_data)
			xhr.onload = () => {
				if (xhr.status === 200) {
					resolve(JSON.parse(xhr.responseText))
				} else {
					reject(Error(xhr.statusText))
				}
			}
		})
	},
	
	/**
	 * 判断当前浏览器是否为移动端
	 * @returns {boolean} 返回值是布尔值true/false
	 */
	isMobile: () => {
		if (window.navigator.userAgent.match(/(phone|pad|pod|iPhone|iPod|ios|iPad|Android|Mobile|BlackBerry|IEMobile|MQQBrowser|JUC|Fennec|wOSBrowser|BrowserNG|WebOS|Symbian|Windows Phone)/i)) {
			// 移动端
			return true
		} else {
			if (window.navigator.userAgent.match(/(Macintosh)/i) && window.navigator.maxTouchPoints >= 1) {
				// iPad
				return true
			} else {
				// PC
				return false
			}
		}
	},

	/**
	 * 判断当前浏览器是否为Android
	 * @returns {boolean} 返回值是true/false
	 */
	isAndroid: () => {
		const _ua = window.navigator.userAgent
		if (_ua.indexOf('Android') > -1 || _ua.indexOf('Linux') > -1) {
			return true
		} else {
			return false
		}
	},

	/**
	 * 判断当前浏览器是否为iOS
	 * @returns {boolean} 返回值是true/false
	 */
	isIos: () => {
		const _ua = window.navigator.userAgent
		if (!!_ua.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/) || !!_ua.match(/Macintosh.+Mac OS X/)) {
			return true
		} else {
			return false
		}
	},

	/**
	 * 判断当前浏览器是否为微信
	 * @returns {boolean} 返回值是true/false
	 */
	isWeixin: () => {
		const _ua = window.navigator.userAgent
		if (_ua.indexOf('MicroMessenger') > -1) {
			return true
		} else {
			return false
		}
	},
	
	/**
	 * 根据当前窗口大小改变html根字体大小
	 * 可以在页面初始化之后和窗口大小改变时调用此方法
	 * window.addEventListener('load', () => jsToolsH5.resizeFont())
	 * window.addEventListener('resize', () => jsToolsH5.resizeFont())
	 */
	resizeFont: () => {
		const _windowWidth = document.documentElement.clientWidth > 750 ? 750 : document.documentElement.clientWidth
		document.documentElement.style.fontSize = (_windowWidth / 750) * 100 + 'px'
	},

	/**
	 * 格式化毫秒数,换算成天时分秒
	 * @param {number} milliseconds - 需要格式化的毫秒数
	 * @returns {object} - 返回值是一个对象,里面有seconds、minutes、hours、days
	 */
	millisecondFormat: (milliseconds) => {
		const _timeObj = {
			days: 0,
			hours: 0,
			minutes: 0,
			seconds: 0,
		}
		if (!!milliseconds) {
			_timeObj.days = Math.floor(milliseconds / (1000 * 60 * 60 * 24))
			_timeObj.hours = Math.floor((milliseconds % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60))
			_timeObj.minutes = Math.floor((milliseconds % (1000 * 60 * 60)) / (1000 * 60))
			_timeObj.seconds = Math.floor((milliseconds % (1000 * 60)) / 1000)
		}
		return _timeObj
	},
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 从外部h5浏览器跳转到微信公众号关注页面需要一定的技术支持。以下是几种可行的方法: 1. 使用微信公众号自带的关注二维码 - 在微信公众号后台生成关注二维码 - 将二维码图片上传到自己的网站服务器上 - 在网页中引用该二维码图片,点击时跳转到微信公众号关注页面 2. 使用微信JS-SDK的openUrl方法 - 在网页中引用微信JS-SDK - 调用JS-SDK的openUrl方法,将微信公众号的关注链接传入 - 点击时会自动跳转到微信公众号关注页面 3. 使用第三方平台提供的接口 - 在第三方平台上申请微信公众号相关的API权限 - 调用API接口,生成带有关注链接的二维码或者直接跳转到关注页面 注意:以上方法都需要用户已经安装微信客户端,并且已经关注了公众号才能实现跳转到关注页面。如果用户没有关注公众号,则会跳转到微信公众号的介绍页面。 ### 回答2: 从外部H5非微信浏览器跳转到微信公众号关注页面有以下几种可行的办法: 1. 使用微信公众号的二维码:将微信公众号的关注二维码放置在H5页面上,用户在非微信浏览器上扫描二维码后,会跳转到微信浏览器中打开,并直接进入关注页面。 2. 使用URL跳转:在非微信浏览器中,使用特定的URL链接,通过识别微信浏览器的UA信息,将用户重定向到微信浏览器,并直接进入关注页面。例如,可以使用以下代码来实现: ``` window.location.href = "weixin://profile/微信公众号的原始ID"; ``` 3. 调用微信JS-SDK:如果已经在微信公众号开发者平台中对H5页面进行了配置,可以通过调用微信JS-SDK中的相关接口实现跳转。具体步骤如下: a. 在H5页面引入微信JS-SDK库,并对其进行初始化。 b. 使用微信JS-SDK提供的接口,调用`openProfile`方法,传入公众号的原始ID作为参数,实现跳转到关注页面。具体代码如下: ``` wx.ready(function() { wx.openProfile({ username: '微信公众号的原始ID', openType: 'official', }); }); ``` 以上是一些常用的从外部H5非微信浏览器跳转到微信公众号关注页面的办法,根据具体的需求和环境选择适合的方法即可。 ### 回答3: 在外部H5“非微信”浏览器跳转到微信公众号关注页面,主要有以下几种办法: 1. 通过生成带参数的二维码:可以在外部H5页面上生成带有微信公众号关注链接的二维码,用户在使用非微信浏览器扫描二维码后,会跳转到微信公众号关注页面。 2. 使用URL Scheme:微信提供了自定义URL Scheme的功能,可以通过调用特定的URL Scheme实现在非微信浏览器中跳转到微信公众号关注页面。例如,可以在外部H5页面上放置一个按钮,点击按钮后调用微信的URL Scheme,自动跳转到微信公众号关注页面。 3. 利用微信开放平台提供的JSAPI:微信开放平台提供了一些JSAPI供开发者使用,其中包括了关注公众号的接口。可以通过在外部H5页面引入微信开放平台的JSAPI,并且调用关注公众号的接口,实现在非微信浏览器中跳转到微信公众号关注页面。 需要注意的是,以上方法都需要在用户手机上安装有微信客户端,并且用户需要登录微信账号才能完成跳转。另外,在一些安卓浏览器中,可能存在无法直接调用微信URL Scheme的情况,需要用户手动选择打开链接的方式。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值