我在页面上有一个流程图的播放列表。我对包含特殊字符标题的曲目有问题。目前我有以下代码可以正常工作:
$(function(){
$f("player", "http://releases.flowplayer.org/swf/flowplayer-3.2.18.swf", {
clip: {
baseUrl: "http://localhost/gbc/"
},
playlist: [
{ url: "media/20140724_agoodsong.mp3",
name: "20140724_agoodsong.mp3",
title: "this title works",
class: "audio",
id: "3"
}
]
});
$f("player").playlist("div.playlist:first", {loop:true});
});
然而,第二个我在标题中放了一个特殊字符,它不起作用,例如title: "this doesn't work"
。没有错误,我可以告诉;开发人员工具控制台或Apache服务器日志中没有任何内容。一切都显示得很好,就在我点击歌曲播放时,播放器变黑,没有任何反应。我试过在它前面放回斜线来逃避它title: "this still doesn\'t work"
,但它不会改变任何东西。这让我觉得它与Flowplayer Playlist插件处理它的方式有关。因为它在JavaScript中获取这些值并将它们插入到html中的模板中,如下所示:
<div class="playlist">
<ul class="${class}">
<li>
<img data-name="${name}" class="audio" src="images/delete.png" id="${id}" />
<a href="${url}">
${title}
</a>
</li>
</ul>
</div>
这是显示问题的 FIDDLE 。目前它可以工作,但在标题中添加任何类型的特殊字符,它就会停止工作。甚至为撇号添加像'
这样的html代码也会阻止它工作。
有谁知道如何包含具有特殊字符的标题?
答案 0 :(得分:0)
所以我最终通过使用unicode转义特殊字符来使其工作。所以对于撇号我在这种情况下使用了\u2019
。
$(function(){
$f("player", "http://releases.flowplayer.org/swf/flowplayer-3.2.18.swf", {
clip: {
baseUrl: "http://localhost/gbc/"
},
playlist: [
{ url: "media/20140724_agoodsong.mp3",
name: "20140724_agoodsong.mp3",
title: "this title work\u2019s",
class: "audio",
id: "3"
}
]
});
$f("player").playlist("div.playlist:first", {loop:true});
});
您可以在 FIDDLE 中看到上述代码。
虽然这解决了我最初的问题,但这些标题在我的情况下是用户输入,所以我必须找到一种方法来查找特殊字符并将其转换为它们的unicode等价物。经过大量的谷歌搜索,我没有找到任何具体的东西,所以我尝试了不同的方法。我没有使用flowplayer documentation使用的模板,只是在html中打印了播放列表。所以现在在JavaScript中我只是为flowplayer设置了基本url并实例化了播放列表插件。
$f("player", "http://releases.flowplayer.org/swf/flowplayer-3.2.18.swf", {
clip: {
baseUrl: 'http://localhost/gbc/'
}
});
$f("player").playlist("div.playlist:first", {loop:true});
然后在我的PHP脚本中,我使用与我开始使用的模板相同的格式循环并创建每个播放列表项目。
while ($row = mysqli_fetch_assoc($result))
{
$id = $row['id'];
$name = $row['name'];
$title = stripslashes($row['title']);
$type = $row['type'];
$class = "audio";
if (strpos($type,'video') !== false) {
$class = "video";
}
print "<ul class='$class'>
<li>
<img data-name='$name' class='deleteAudio' src='images/delete.png' id='$id' />
<a href='media/$name'>
$title
</a>
</li>
</ul>";
}
然后在页面文件中我只包含此脚本以打印出播放列表。
<div class="playlist">
<?php include "phpscripts/getAudio.php"; ?>
</div>
不确定这是否是最好的方法,但它对我有用!希望这会为别人节省一些时间和挫折。