Discuz! X3.* 手机版支持HTML5音乐播放的方法
分类 网站技术/村民张先生 发布于 2015-04-21 08:20
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下点击这里收听”,点击后再进入可加载音频的页面(预加载、自动播放、循环播放均启用)。
欢迎谈谈你的看法(无须登录) *正文中请勿包含"http://"否则将被拦截