老张小站

  1. 欢迎光临

    感谢访问老张的博客!

  • 1
2,270

Discuz! X3.* 手机版支持HTML5音乐播放的方法

分类 网站技术/村民张先生 发布于 2015-04-21 08:20
0

2015年9月16日更新:修复当访问伪静态地址时,确认播放背景音乐的地址( .html&music=ok )中链接符错误的问题,伪静态地址时连接符为 ? ,动态地址时连接符为 & 。

打开 source/function/function_discuzcode.php 文件,

查找:

				$message = preg_replace("/\[audio(=1)*\]\s*([^\[\<\r\n]+?)\s*\[\/audio\]/is", "[media]\\2[/media]", $message);

替换为:

				if($_GET[music] != 'ok') {
					$Lianjiefu = strpos($_SERVER['REQUEST_URI'], '?') === false ? '?' : '&';
					$message = preg_replace("/\[audio(=1)*\]\s*([^\[\<\r\n]+?)\s*\[\/audio\]/is", "<a href=\"".$_SERVER['REQUEST_URI'].$Lianjiefu."music=ok\" style=\"color:red;\">本帖包含背景音乐,WIFI下点击这里收听</a>", $message);
				} else {
					$message = preg_replace("/\[audio(=1)*\]\s*([^\[\<\r\n]+?)\s*\[\/audio\]/is", "<audio src=\"\\2\" controls=\"controls\" preload=\"auto\" autoplay=\"autoplay\" loop=\"loop\"></audio>", $message);
				}

为什么这里要写个判断?

因为UC浏览器和QQ浏览器这俩怪胎,就算写了 preload="none" 或移除 preload ,他们仍然会预加载音频,流量难道不要钱吗?用户咒骂的会是你的网站!

所以加上这个判断,正常情况下进入包含音乐的帖子,会提示“本帖包含背景音乐,WIFI下点击这里收听”,点击后再进入可加载音频的页面(预加载、自动播放、循环播放均启用)。

欢迎转载分享,转载请注明 来源:大张小站 https://www.zhang.cq.cn/20151399.html
若您喜欢这篇文章,欢迎订阅老张小站以获得最新内容。 / 欢迎交流探讨,请发电子邮件至 mail[at]vdazhang.com 。


欢迎谈谈你的看法(无须登录) *正文中请勿包含"http://"否则将被拦截