前端——如何切换html还能使背景音乐继续播放

前言

现在有个需求,就是切换html还能使背景音乐继续播放,不会重新播放。
众所周知,html一旦切换,页面内容会重新加载,音乐也会重新加载播放,怎么才能做到音乐连续播放,而不是重新播放呢?

查资料发现前辈们提了个办法:用iframe来切换页面,这样在iframe本身的音乐就不会中断重新刷新了。
嗯!好办法!
iframe代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<iframe src="song.html" style="display: none"></iframe>
<iframe width="100%" align="center" height="200" id="win" name="win" onload="Javascript:SetWinHeight(this)" frameborder="0" scrolling="no" src="home.html"></iframe>
</body>
</html>

有一个问题,就是iframe这个页面,如何跟随它的子页面进行高度的自适应呢?给出如下代码:

 /**
  * 这个script脚本只针对iframe切换页面进行iframe高度的自适应
  * @param obj
  * @constructor
  */
 //iframe自适应高度
 function SetWinHeight(obj) {
     var win=obj;
     if (document.getElementById) {
         if (win && !window.opera) {
             if (win.contentDocument && win.contentDocument.body.offsetHeight)
                 win.height = win.contentDocument.body.offsetHeight;
             else if(win.Document && win.Document.body.scrollHeight)
                 win.height = win.Document.body.scrollHeight;
         }
     }
 }

但是同时又要解决一个问题,就是如果用iframe来加载页面,那在子页面进行跳转的时候,肯定是需要获取子页面的名字,再更换iframe父页面的src。
那么子页面怎么传递数据给iframe这个父页面呢?
iframe父页面

<script>
    //父页面监听:获取点击的a标签,来切换iframe的src,进行更换显示页面
    window.addEventListener("message", function(event){
        var data = event.data;
        console.log(data);
        document.getElementById("win").src = data.page;
        //此时data.page就是子页面里changePage函数里传来的page数值
    })
</script>

子页面:

function changePage(page) {
    window.parent.postMessage({
        page: page
    }, "*");
}

至此就结束啦,iframe完成了页面的切换,音乐也可以继续播放了。

评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

狮子座的程序员

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值