少女祈禱中...
Loading...

ccloli

Loading...

博客 BGM 正式上线~~\(^ω^\)

经过数小时的奋战,BGM 功能终于弄好了~~> <浏览器兼容性什么的请死一死吧……

如果汝对它的实现感兴趣的话,可以点击下面的链接查看源码:http://ccloli.com/bgm

其实这货算是策划已久什么的?在很久以前就想像 QQ 空间那样给自己的博客加个 BGM(对此 @琥珀hentai 对我吐槽了许久← ←)。在上上个月的信息技术段考时,由于试卷早已答完而老师还没有收卷,所以就无聊在桌子上写了这货的雏形……

请不要吐槽我的字_(:з」∠)_

请不要吐槽我的字_(:з」∠)_

至于实际上单纯添加 BGM 还算简单,难点只是在其他的地方……

  1. 在跳转页面时仍旧可以继续播放音乐。由于此人不会 XMLHttpRequest 之类高级的东西,所以做不出 SoundCloud 这样的效果,所以只能用老土的 iframe。
  2. 音乐播放控制。这个也算简单,参考了《HTML5 audio 實驗》这篇文章,大致了解了一下,实现了音乐播放控制(具体请将鼠标移至歌曲信息的那一栏上),虽然很简陋什么的_(:з」∠)_……
  3. 单标签页播放音乐。这个比较复杂,如果并没有这一举措,会导致每一个在新标签页打开的网页都会播放音乐。刚开始打算用 localStorage 记录播放标记,因为 localStorage 可以跨标签页传递数据,而不是像 sessionStorage 那样只限单个页面的会话。但我并不知道怎么主动将这个标记清除掉,因为即便是关闭这个网页甚至整个浏览器这个标记都会存在,结局就是背景音乐只能播放一次,除非清除 HTML5 数据。之后打算改用 cookie 的方式记录播放标记,但是这样只能在下次打开浏览器时才能播放。再之后考虑用回 localStorage,方案是只要页面没有关闭就每隔 1 秒向 localStorage 写入当前时间,如果打开网页调用该时间时发现与当前时间相差 10 秒就开启 BGM,但是这样对  localStorage 写入过于频繁会产生浏览器在不停刷新的样子(至少 chrome 是)……在查找相关资料后发现原来有个事件叫 unload……

    window.onbeforeunload = function(){...} //貌似还有个window.onunload,区别在于执行的时间

    于是绑定该事件后,问题基本解决……如果出现浏览器异常退出导致无法执行什么的……请手动点击页面最下方的“Clear Running-BGM Data”……

  4. 网址的更新。这个算是一个难点了,要知道 iframe 里网址的更新是不会反馈到父框架上的。通过 Google 的帮助,找到了一种比较好的方法——HTML5 History API:

    window.history.pushState('Object', 'Title', 'Url'); // Object 是对象名,不知道有什么作用;Title 可以修改网页标题,不过目前没有浏览器支持,所以需要 document.title 配合使用;Url 是目标网址,可以是相对地址,也可以是绝对地址,仅限当前域

    网址自动切换什么的,用个 setInterval 就可以搞定。至于跨域的问题捣鼓了好久都没有弄好/ \毕竟基于浏览器安全性设置的东西不好弄,所以只能加个提示,后台一直报错什么的让它一直报吧,我无力了……

  5. 播放列表的更新。此人偷懒,直接用已经弃用且从未启用的电台播放列表管理页面来弄了(源码见下,手写稿什么的明天再放)……反正能用就行……
  6. 浏览器兼容性……这个我就不说了,看源码就懂了……各种辛酸泪_(:з」∠)_
  1. // http://ccloli.com/bgm/editlist.php
  2. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml">
  4. <head>
  5. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  6. <title>音乐列表数据修改</title>
  7. </head>
  8. <body>
  9. <?php
  10. if(@$_POST['action']=='1'){
  11. $data=file_get_contents('playlist.txt').'{
  12. title: \''.$_POST['title'].'\',';
  13. $data.='
  14. artist: \''.$_POST['artist'].'\',';
  15. $data.='
  16. album: \''.$_POST['album'].'\',';
  17. $data.='
  18. url: \''.$_POST['mp3'].'\'
  19. },';
  20. $writein= file_put_contents('playlist.txt',$data);
  21. if($writein==true)$context='文件写入成功!';
  22. else $context='文件写入失败!';
  23. }
  24. elseif(@$_POST['action']=='4'){
  25. $data=$_POST['value'];
  26. $writein= file_put_contents('playlist.txt',$data);
  27. if($writein==true)$context='文件写入成功!';
  28. else $context='文件写入失败!';
  29. }
  30. if($context){
  31. ?>
  32. <style>
  33. @-webkit-keyframes 'tips'{from{opacity:1;top:0px}60%{opacity:1;top:0px}to{opacity:0;top:-36px}}
  34. @-moz-keyframes 'tips'{from{opacity:1;top:0px}60%{opacity:1;top:0px}to{opacity:0;top:-36px}}
  35. @-o-keyframes 'tips'{from{opacity:1;top:0px}60%{opacity:1;top:0px}to{opacity:0;top:-36px}}
  36. @keyframes 'tips'{from{opacity:1;top:0px}60%{opacity:1;top:0px}to{opacity:0;top:-36px}}
  37. </style>
  38. <div style="position:fixed;top:-1000px;z-index:1000;left:0px;width:100%;height:36px;background:pink;color:red;text-shadow:2px 2px 5px #000,2px 1px 10px gray;font-size:24px;text-align:center;-webkit-animation:'tips' 5s;-moz-animation:'tips' 5s;-o-animation:'tips' 5s;animation:'tips' 5s;point-event:none">
  39. <?php echo $context ?>
  40. </div>
  41. <?php
  42. }
  43. ?>
  44. <form method="post" name="setting1" action="editlist.php">
  45. <h2>添加到播放列表</h2>
  46. <hr>
  47. <input name="action" value="1" hidden>
  48. 标题 <input name="title" style="width:300px" /><br />
  49. 演唱 <input name="artist" style="width:300px" value="<?php if(@$_POST['artist'])echo $_POST['artist'] ?>" /><br />
  50. 专辑 <input name="album" style="width:300px" value="<?php if(@$_POST['album'])echo $_POST['album'] ?>" /><br />
  51. mp3 <input name="mp3" style="width:300px" /><br />
  52. <input type="submit" onclick="document.getElementsByName('mp3')[0].value=document.getElementsByName('mp3')[0].value.replace('https://skydrive.live.com/redir?resid=','http://storage.live.com/items/');">
  53. </form>
  54. <form method="post" name="setting4" action="editlist.php">
  55. <h2>手动修改播放列表</h2>
  56. <hr>
  57. <input name="action" value="4" hidden>
  58. <textarea name="value" style="width:100%;height:500px"><?php echo file_get_contents('playlist.txt') ?></textarea><br />
  59. <input type="submit">
  60. </form>
  61. </body>
  62. </html>

好吧大致就是这样,虽然目前音乐不多——重复播放几率颇高啊——而且没有多少纯音乐,咱实在是没有太多精力弄太多啊/ \今天晚上终于把播放进度以及从来没有注意的 chrome only 什么的弄好了……累死了,去睡觉吧/ \

顺便吐槽 IE9 的缓冲机制/ \你妹啊缓冲后就不能等等再播放吗……缓冲 0.5s 播放 0.5s 再缓冲 0.5s 再播放 0.5s 无限循环累不累啊……还有 Firefox 终于支持 mp3 了 TUT ogg 对于 chrome 来说就是个坑啊还要缓冲完才能放……

嗯嗯,还有,大家说一下大家喜欢哪类曲目吧0 0,比如纯音乐、日文、英文什么的……嘛嘛,就是这样,各位晚安 =3=

Comments

  1. 课桌都被cc你残害成什么样子了www

    Google Chrome 28.0.1500.20 Google Chrome 28.0.1500.20 GNU/Linux x64 GNU/Linux x64
  2. 没有音量调节,差评~
    看着 onunload ,sessionStorage 哭了……
    (另外,你还没实现保障关了播放音乐的网页,其它网页会自动播放音乐。)
    还有页底各种服务器探针啥的公开真的没关系么?= =lll

    Google Chrome 28.0.1500.20 Google Chrome 28.0.1500.20 Debian GNU/Linux Debian GNU/Linux
    • @Jak Wings 找到单调调节了……不过没有记录配置,等待改进。X_X

      Google Chrome 28.0.1500.20 Google Chrome 28.0.1500.20 Debian GNU/Linux Debian GNU/Linux
    • @Jak Wings 保存配置什么的等一段时间吧……以后会添加一个完整的设置页……
      onunload 和 sessionStorage 怎么了/ \
      (其实我就是想那样← ←这不是 bug)
      仔细看了一下,服务器探针没有涉及隐私吧……

      Google Chrome 27.0.1453.93 Google Chrome 27.0.1453.93 Windows 7 x64 Edition Windows 7 x64 Edition
      • @864907600cc sessionStorage的资料会在你关闭所有那个域名的标签时自动清空。

        探针暴露了真实的文件地址,还有服务器设置,方便入侵分析~

        Google Chrome 28.0.1500.20 Google Chrome 28.0.1500.20 Debian GNU/Linux Debian GNU/Linux
        • @Jak Wings 不对,sessionStorage 只针对单个标签页/窗口,如果你关闭这个页面,数据就会清空,而且它只能在这个页面使用,即使你打开一个新的标签页也不能得到原先的 sessionStorage 数据。换句话说,sessionStorage 的数据仅在当前标签页下有效;或者说一个标签页对应一个 sessionStorage。

          Google Chrome 27.0.1453.93 Google Chrome 27.0.1453.93 Windows 7 x64 Edition Windows 7 x64 Edition
  3. 其实这货就是原先 FM 播放列表管理页面的源码/ \
    这货就是原先 FM 播放列表管理页面的源码/ \就是最后那一长串源码的原型……

    Google Chrome 27.0.1453.93 Google Chrome 27.0.1453.93 Windows 7 x64 Edition Windows 7 x64 Edition
    • @864907600cc 无法直视的字体,刷新页面时竟然还能保持播放,好神奇~

      Google Chrome 28.0.1500.20 Google Chrome 28.0.1500.20 Debian GNU/Linux Debian GNU/Linux
      • @Jak Wings 如果你是刷新框架内页面是不会终止播放的;如果你是刷新整个网页会激活 onbeforeload 事件清除正在播放的标记,在获取页面时会重新激活 BGM。

        Google Chrome 27.0.1453.93 Google Chrome 27.0.1453.93 Windows 7 x64 Edition Windows 7 x64 Edition
          • @Jak Wings 其实我一直在好奇 SoundCloud 是怎么做到的……

            Google Chrome 27.0.1453.94 Google Chrome 27.0.1453.94 Windows 7 x64 Edition Windows 7 x64 Edition
            • @864907600cc 搜索SoundCloud从任意时间点播放音乐的奥秘~\(0_0\)

              Google Chrome 28.0.1500.20 Google Chrome 28.0.1500.20 Debian GNU/Linux Debian GNU/Linux
  4. 我能吐槽桌子上的塗鴉麼……好懷念啊……

    要是一點進來就是“我不斷的尋找,油膩的師姐在哪裡”就好了wwww

    Google Chrome 27.0.1453.94 Google Chrome 27.0.1453.94 Windows 7 x64 Edition Windows 7 x64 Edition
  5. 一打开网页听到声音就果断alt+w了,话说本来就听着歌突然插些乱七八糟的东西进来/ \
    (你hentai,汝全家都是hentai

    Google Chrome 27.0.1453.94 Google Chrome 27.0.1453.94 Windows 7 Windows 7
  6. 最讨厌带BGM而且居然还是默认ON的网站了偶还得关iTunes的播放(ノ`A”)ノ 彡┻━┻

    Safari 6.0.4 Safari 6.0.4 Mac OS X  10.8.3 Mac OS X 10.8.3
    • @lovee 我我我我错了QAQ我只是想要体现它的存在感而已……
      另外刚刚把代码改好了……应该不会自动播放了……

      Google Chrome 28.0.1485.0 Google Chrome 28.0.1485.0 Windows XP Windows XP
  7. 噗。。。两个bgm了www
    screencloud.net/v/jRGQ

    Google Chrome 28.0.1500.20 Google Chrome 28.0.1500.20 GNU/Linux x64 GNU/Linux x64
    • @天羽ちよこ 不应该吧……难道汝又点了清除……?/ \
      话说汝不觉得来来去去都是这几首歌不会腻?

      Google Chrome 28.0.1485.0 Google Chrome 28.0.1485.0 Windows XP Windows XP
      • @864907600cc 我只是随便点了几下…..
        听多了当然会腻的啦www
        但是来cc博客不是为了听歌的诶。。

        Google Chrome 28.0.1500.20 Google Chrome 28.0.1500.20 GNU/Linux x64 GNU/Linux x64
        • @天羽ちよこ =.=没错,我远离政治了,所以今天政治模拟会考考砸了……
          =,=其实我想直接拉萌否电台的资源,反正在线播放对于十多秒的 ping 和 64Kbps 什么的并不在意,不过这样子对服务器负担应该比较大……

          Google Chrome 28.0.1485.0 Google Chrome 28.0.1485.0 Windows XP Windows XP
          • @864907600cc 我去准备准备睡觉了喵,早点睡啊笨淡!
            我以前也经常关注政治的….后来入宅了
            就无所谓了www

            Google Chrome 28.0.1500.20 Google Chrome 28.0.1500.20 GNU/Linux x64 GNU/Linux x64
  8. 为什么我的环聊列表里出现了cc乃的名字wwww

    Google Chrome 28.0.1500.20 Google Chrome 28.0.1500.20 GNU/Linux x64 GNU/Linux x64
  9. 好热闹的评论区 = =
    BGM挂掉了?turn on之后没声音的说

    Firefox 21.0 Firefox 21.0 Windows 7 Windows 7
    • @千歳 可能是无法连接到 SkyDrive 的服务器吧……理论上 Firefox 21 是支持 mp3 文件的……
      或者是和 Firefox 的页面黑白样式冲突了,IE 是有专门的滤镜的(filter: progid:DXImageTransform.Microsoft.BasicImage(grayscale=1)),Chrome 也是有专门的滤镜的(-webkit-filter: grayscale()),而 Firefox 是用 javascript 实现的(filter: url(“data:image/svg+xml;utf8,<svg xmlns=\’http://www.w3.org/2000/svg\’><filter id=\’grayscale\’><feColorMatrix type=\’matrix\’ values=\’0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0 1 0\’/></filter></svg>#grayscale”))

      Google Chrome 28.0.1485.0 Google Chrome 28.0.1485.0 Windows XP Windows XP
      • @864907600cc
        咳咳..其实我第一次来的时候也对黑白耿耿于怀,不是css所以去不掉好难受…
        现在能放了。囧,大概是当时网络不稳定的缘故

        Firefox 21.0 Firefox 21.0 Windows 7 Windows 7
          • @864907600cc
            …囧。
            请无视我,当我农民刚进城没上过网嗯…

            Firefox 21.0 Firefox 21.0 Windows 7 Windows 7
            • @千歳 其实我在 Google 之前我完全不知道 Firefox 支持 filter 这个 css……

              Google Chrome 27.0.1453.94 Google Chrome 27.0.1453.94 Windows 7 x64 Edition Windows 7 x64 Edition
              • @864907600cc
                我是懒得看文档星人,除了-webkit-filter之外都不知道 _(:3ゝ∠)_
                cc是loli属性的程序娘?

                Firefox 21.0 Firefox 21.0 Windows 7 Windows 7
                • @千歳 我也希望自己是 loli 属性的程序娘,不过二次元和三次元所不同,你懂的_(:з」∠)_
                  filter 曾经只看见在 IE 上出现过,-webkit-filter 只有 webkit 浏览器支持……

                  Google Chrome 27.0.1453.94 Google Chrome 27.0.1453.94 Windows 7 x64 Edition Windows 7 x64 Edition
                  • @864907600cc
                    懂w
                    因为只有webkit的filter是符合标准的,ms那种奇形怪状的语法从来都没用过..至于ff就不知道是怎么样了,貌似还不支持filter?
                    不过IE和FF的下个版本就都会支持filter了应该

                    Firefox 21.0 Firefox 21.0 Windows 7 Windows 7
                    • @千歳 IE 支持使用 IE 自带的滤镜(这一点算是旧版本 IE 少有的优点了)
                      filter 支持还是需要时间的,Firefox 到 21 才支持 mp3 和 mp4 视频(好高兴 BGM 不用再专门转 ogg 了_(:з」∠)_)

                      Google Chrome 28.0.1485.0 Google Chrome 28.0.1485.0 Windows XP Windows XP
                  • 864907600cc :
                    @864907600cc
                    我就是说不喜欢ms的私有滤镜,语法太坑爹了~
                    哦哦,确实..我看错啦,下个版本support unknown _(:3ゝ∠)_

                    Firefox 21.0 Firefox 21.0 Windows 7 Windows 7
                    • @千歳 好吧_(:з」∠)_不过确实很强大……

                      Google Chrome 28.0.1485.0 Google Chrome 28.0.1485.0 Windows XP Windows XP
  10. 突然要翻墙才能打开了wwww

    Google Chrome 28.0.1500.20 Google Chrome 28.0.1500.20 GNU/Linux x64 GNU/Linux x64
  11. 音乐下载慢,以前好快的 _(:з」∠)_

    Google Chrome 28.0.1500.20 Google Chrome 28.0.1500.20 Debian GNU/Linux Debian GNU/Linux
    • @Jak Wings 音乐基本都是 SkyDrive 的,只有两首是在 Subdomain 的服务器上(汝可以看源码了解)

      Google Chrome 27.0.1453.94 Google Chrome 27.0.1453.94 Windows 7 x64 Edition Windows 7 x64 Edition
      • @864907600cc 貌似晚上网速比较好…… 翻源码一看 O_Olll hentai_alert

        Google Chrome 28.0.1500.20 Google Chrome 28.0.1500.20 Debian GNU/Linux Debian GNU/Linux
          • @864907600cc 也看了 = = 虽然文章看过了,不过还是习惯直接 Ctrl+U 找链接(||→ →)
            话说 1 点了怎么还不去上课,时差么?O_O

            Google Chrome 28.0.1500.20 Google Chrome 28.0.1500.20 Debian GNU/Linux Debian GNU/Linux
              • @864907600cc (= =||)开个玩笑,不过 BGM 怎么不播放了,我亲手把 bgm_running 调成 false 刷新后它也不载入播放器 Orz

                Google Chrome 28.0.1500.20 Google Chrome 28.0.1500.20 Debian GNU/Linux Debian GNU/Linux
                • _(:з」∠)_ 手动播放成功…… bgm_start()

                  Google Chrome 28.0.1500.20 Google Chrome 28.0.1500.20 Debian GNU/Linux Debian GNU/Linux
                  • @Jak Wings 其实是因为我的源码的问题,如果有 bgm_running 就不会播放,即使改成 false 也没有用……

                    Google Chrome 27.0.1453.94 Google Chrome 27.0.1453.94 Windows 7 x64 Edition Windows 7 x64 Edition
                    • @864907600cc -_- 竟然多了个CSS特效,不过bug还在 -_-

                      Google Chrome 28.0.1500.20 Google Chrome 28.0.1500.20 Debian GNU/Linux Debian GNU/Linux
  12. 音乐列表会定期更新么?

    Google Chrome 28.0.1500.20 Google Chrome 28.0.1500.20 GNU/Linux x64 GNU/Linux x64
    • @Jak Wings 不定期更新,我没有那么多的音乐啊_(:з」∠)_想从萌否扒不过音质只有 64Kbps,只能去搜索,而且有时下一首 320 Kbps 的音乐要下整个专辑(同人音乐你懂的)

      Google Chrome 28.0.1485.0 Google Chrome 28.0.1485.0 Windows XP Windows XP
        • @Jak Wings 特别是那些专辑里的单曲……比如说这首 今、開かれる、トビラ,最后我是在 QQ 音乐里抓的,行列のできるえーりん診療所 这首只能从 nicosound 里提取,而类似 流星サウンド 这首因为 nicosound 的音质混杂度太高,只能把整个专辑下载下来再把这一首歌曲提出来……

          Google Chrome 27.0.1453.94 Google Chrome 27.0.1453.94 Windows 7 x64 Edition Windows 7 x64 Edition
            • @Jak Wings 话说汝觉得 10 月份去买 cc.moe 这域名要多少钱← ←

              Google Chrome 28.0.1485.0 Google Chrome 28.0.1485.0 Windows XP Windows XP
              • @864907600cc 为了让商家抢注,可能会像 .XXX 的那么高吧…… =_=

                Google Chrome 28.0.1500.20 Google Chrome 28.0.1500.20 GNU/Linux x64 GNU/Linux x64
                • @Jak Wings loli.com 售价 $88,888 _(:з」∠)_ 我估计 loli.moe 的话……估计会被 11 区的技术宅抢走(潜行吧奈亚子W第一集提到的某不存在的域名在当天就被抢注),所以 cc.moe 应该不容易被注意(但是两位价格应该更高_(:з」∠)_)
                  还有,如果汝有能力的话,帮我要个 http://www.moe.edu.cn 来吧_(:з」∠)_

                  Google Chrome 28.0.1485.0 Google Chrome 28.0.1485.0 Windows XP Windows XP
  13. 可以参考下这篇东东:http://www.ruanyifeng.com/blog/2013/07/how_to_make_search_engines_find_ajax_content.html

    Google Chrome 28.0.1500.20 Google Chrome 28.0.1500.20 GNU/Linux x64 GNU/Linux x64
  14. 哇 电台
    话说我肿么没看到电台的地址(趴

    Google Chrome 29.0.1547.66 Google Chrome 29.0.1547.66 Windows 7 x64 Edition Windows 7 x64 Edition
    • @魔法少女千寻 页面最下方有个 Turn On/Off BGM ,点击它直至提醒“Background music is turned on.”,刷新页面就可以了(如果无法播放请点击旁边的“Clear Running-BGM Data”)

      Google Chrome 31.0.1621.1 Google Chrome 31.0.1621.1 Windows XP Windows XP

BoldItalicDeleteLinkBlockquoteImageCode

Back to top