最近一段,想做一个能显示歌词的音乐播放器,本打算用Delphi实现,但恰好本人之前在Delphi FMX下编写了一个html编辑调试的app模块,就想试试能不能用Javascript代码来达到这样一个目的。
按老规矩,先上网搜了一圈,看有没有现成的代码可以用来修改的。结果发现,音乐播放器的代码倒是不少(javascript的资源可比delphi丰富多了),但是能读取本地歌词文件的却不多,仅有的几个复制过来在手机的Webbrowser中试了一下,也都无法运行。经过查阅资料、多方求索了解到,原来读取本地文件的操作属于跨域,是被多数浏览器所禁止的不安全行为。虽说也有几种解决的办法:ajax、jsonp、iframe等,但实际验证后,只有jsonp方式能够读取json格式的数据,并且数据中不能包含有换行符。iframe倒是能显示文本数据,但无法将显示的内容存入到变量里。ajax则在手机上根本无效。无奈,只好换个思路,在html中直接写入歌词lrc的文本,再用javascript将其转换为json格式,然后与播放器配合显示歌词。没有了跨域的限制,代码写起来就容易多了,用了几个正则表达式替换,把lrc文本转成了json格式,再加一个audio播放器组件,一个简单的词曲播放界面就完成了。根据自身的需要,为每首歌曲单独创建一个html页面,再用一个目录页面汇总显示歌曲名称链接,以后再不用担心唱歌忘词了!
Delphi FMX的Webbrowser控件中运行JavaScript代码(带歌词的音乐播放器)
最新推荐文章于 2023-11-22 22:03:59 发布