使用新的 HTML5 历史记录 API 导航时,如何在我的网站上继续播放音乐?
How do I keep music playing on my website when navigating using the new HTML5 History API?
根据已回答的问题:how-do-soundcloud-keep-music-playing-on-when-navigating
Soundcloud 使用 HTML5 引入的新 API - HTML5 历史 API.
所以我想知道如何在我的网站(音乐服务网站)上实现这一点,以便在导航时无缝播放音乐。我已经有一个播放音乐的网站(vis1.php - 是音乐播放器),通过使用 AJAX 将内容加载到 modulewrapper 来无缝导航。
不管这有多大的缺点,它根本不实用,特别是如果有很多用户,所以将 php 的内容加载到 modulewrapper 中并不是一个好主意。
所以根据那篇文章,HTML5 历史 API 似乎是最好的方法,
所以我的问题是,我该如何着手实施这个 HTML5 历史记录 API,或者我能否实施 HTML5 H.API 以及我的 Ajax模块包装器?
<?php include ("./inc/vis1.php"); ?> // this is my music player
<?php
if (isset($_SESSION["user_login"]))
{
echo '
<div id="menu">
<a href="home">Home</a>
<a href="'.$use.'">Prof</a>
<a href="set.php">Set</a>
<a href="msmyg.php">Me</a>
<a href="frireq.php.php">Fr</a>
<a href="nudg.php">Nudg</a>
<a href="logout.php">Logout</a>
</div>
';
}
else{
echo'<div id="menu">
<a href="index.php"/>S</a>
<a href="index.php">L </a>
</div>
';
}
?>
<div id="ihed"><div>
<script src="./js/jquery-2.1.4.min.js"></script>
<script src="./js/general.js"></script>
</html>
<footer>
<div id="c1">
<?php echo "Hedi Bej © i-neo 2015"; ?>
</div>
</footer>
这是我的JavascriptAjaxgeneral.js文件
(function() {
$('#ihed').load('home.php');
var $moduleWrapper = $('#ihed');
var loadIntoModuleWrapper = function(e) {
e.preventDefault();
var $anchor = $(this);
var page = $anchor.attr('href');
$moduleWrapper.load(page);
};
var sendFormAndLoadIntoModuleWrapper = function(e) {
e.preventDefault();
var $form = $(this);
var method = $form.attr('method') || 'GET';
$.ajax({
type: $form.attr('method') || 'GET',
url: $form.attr('action'),
data: $form.serialize(),
success: function(data) {
$moduleWrapper.html(data);
}
});
};
// manage menu links to load content links onto module wrapper
$('.menu').on('click', 'a', loadIntoModuleWrapper);
// manage module-wrapper links to load onto module wrapper
$moduleWrapper.on('click', '.open', loadIntoModuleWrapper);
// manage submits form and load result onto module wrapper
$moduleWrapper.on('submit', '.open-form', sendFormAndLoadIntoModuleWrapper);
}());
谢谢,我该怎么做?
音云一直在播放音乐,因为页面并没有真正改变。他们提出了几个 ajax 请求来加载信息并根据该请求向您显示页面信息。
然后,正如您所说,他们可能正在使用 HTML5 历史记录 API 来保存页面状态,以便用户可以 "go back" 或 "go foward"。
如果您刷新页面,声音将停止,因为将向服务器发出文档请求。
我不熟悉这种架构,但我认为您可以使用 angularJS 轻松完成此操作。试一试:
https://www.codeschool.com/courses/shaping-up-with-angular-js
编辑
更改链接的方法如下:https://developer.mozilla.org/en-US/docs/Web/Guide/API/DOM/Manipulating_the_browser_history
示例:
var stateObj = { foo: "bar" };
history.pushState(stateObj, "page 2", "bar.html");
这会在浏览器 url 上显示您的网站。com/bar。html。
stateObj 是与推送状态关联的 object,"page 2" 是页面标题,但目前浏览器会忽略此参数。
根据已回答的问题:how-do-soundcloud-keep-music-playing-on-when-navigating
Soundcloud 使用 HTML5 引入的新 API - HTML5 历史 API.
所以我想知道如何在我的网站(音乐服务网站)上实现这一点,以便在导航时无缝播放音乐。我已经有一个播放音乐的网站(vis1.php - 是音乐播放器),通过使用 AJAX 将内容加载到 modulewrapper 来无缝导航。 不管这有多大的缺点,它根本不实用,特别是如果有很多用户,所以将 php 的内容加载到 modulewrapper 中并不是一个好主意。
所以根据那篇文章,HTML5 历史 API 似乎是最好的方法, 所以我的问题是,我该如何着手实施这个 HTML5 历史记录 API,或者我能否实施 HTML5 H.API 以及我的 Ajax模块包装器?
<?php include ("./inc/vis1.php"); ?> // this is my music player
<?php
if (isset($_SESSION["user_login"]))
{
echo '
<div id="menu">
<a href="home">Home</a>
<a href="'.$use.'">Prof</a>
<a href="set.php">Set</a>
<a href="msmyg.php">Me</a>
<a href="frireq.php.php">Fr</a>
<a href="nudg.php">Nudg</a>
<a href="logout.php">Logout</a>
</div>
';
}
else{
echo'<div id="menu">
<a href="index.php"/>S</a>
<a href="index.php">L </a>
</div>
';
}
?>
<div id="ihed"><div>
<script src="./js/jquery-2.1.4.min.js"></script>
<script src="./js/general.js"></script>
</html>
<footer>
<div id="c1">
<?php echo "Hedi Bej © i-neo 2015"; ?>
</div>
</footer>
这是我的JavascriptAjaxgeneral.js文件
(function() {
$('#ihed').load('home.php');
var $moduleWrapper = $('#ihed');
var loadIntoModuleWrapper = function(e) {
e.preventDefault();
var $anchor = $(this);
var page = $anchor.attr('href');
$moduleWrapper.load(page);
};
var sendFormAndLoadIntoModuleWrapper = function(e) {
e.preventDefault();
var $form = $(this);
var method = $form.attr('method') || 'GET';
$.ajax({
type: $form.attr('method') || 'GET',
url: $form.attr('action'),
data: $form.serialize(),
success: function(data) {
$moduleWrapper.html(data);
}
});
};
// manage menu links to load content links onto module wrapper
$('.menu').on('click', 'a', loadIntoModuleWrapper);
// manage module-wrapper links to load onto module wrapper
$moduleWrapper.on('click', '.open', loadIntoModuleWrapper);
// manage submits form and load result onto module wrapper
$moduleWrapper.on('submit', '.open-form', sendFormAndLoadIntoModuleWrapper);
}());
谢谢,我该怎么做?
音云一直在播放音乐,因为页面并没有真正改变。他们提出了几个 ajax 请求来加载信息并根据该请求向您显示页面信息。
然后,正如您所说,他们可能正在使用 HTML5 历史记录 API 来保存页面状态,以便用户可以 "go back" 或 "go foward"。
如果您刷新页面,声音将停止,因为将向服务器发出文档请求。
我不熟悉这种架构,但我认为您可以使用 angularJS 轻松完成此操作。试一试:
https://www.codeschool.com/courses/shaping-up-with-angular-js
编辑
更改链接的方法如下:https://developer.mozilla.org/en-US/docs/Web/Guide/API/DOM/Manipulating_the_browser_history
示例:
var stateObj = { foo: "bar" };
history.pushState(stateObj, "page 2", "bar.html");
这会在浏览器 url 上显示您的网站。com/bar。html。
stateObj 是与推送状态关联的 object,"page 2" 是页面标题,但目前浏览器会忽略此参数。