<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[theroadofprogrammers的专栏]]></title><description><![CDATA[生命不息，奋斗不止。]]></description><link>https://blog.youkuaiyun.com/theroadofprogrammers</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; theroadofprogrammers]]></copyright><item><title><![CDATA[高仿网易云音乐]]></title><link>https://blog.youkuaiyun.com/theroadofprogrammers/article/details/113519769</link><guid>https://blog.youkuaiyun.com/theroadofprogrammers/article/details/113519769</guid><author>theroadofprogrammers</author><pubDate>Mon, 01 Feb 2021 15:21:36 +0800</pubDate><description><![CDATA[高仿网易云音乐
链接：高仿网易云音乐

数据源自网易云音乐 API，由于接口不全，主页一些section使用的是本地json。
swift 5编写。
StreamingKit实现音频。
ijkplayer实现卡片视频。
主要实现了主页，歌单，播放器

效果图
（ 考虑到文件大小，降低了渲染效果。）




...]]></description><category></category></item><item><title><![CDATA[JavaScript学习-操作样式的DOM API]]></title><link>https://blog.youkuaiyun.com/theroadofprogrammers/article/details/72588044</link><guid>https://blog.youkuaiyun.com/theroadofprogrammers/article/details/72588044</guid><author>theroadofprogrammers</author><pubDate>Sat, 20 May 2017 21:23:19 +0800</pubDate><description><![CDATA[1，介绍
定义样式的方式有3种 
通过link元素包含外部样式表文件。
使用style元素定义嵌入式样式。
使用style特性定义针对特定元素的样式。
确定浏览器是否支持DOM2级定义的CSS能力，可以使用一下代码。var supportsDOM2CSS = document.implementation.hasFeature("CSS","2.0");
var supportsDOM2CSS2 =]]></description><category></category></item><item><title><![CDATA[JavaScript学习-DOM2和DOM3的变化]]></title><link>https://blog.youkuaiyun.com/theroadofprogrammers/article/details/71774294</link><guid>https://blog.youkuaiyun.com/theroadofprogrammers/article/details/71774294</guid><author>theroadofprogrammers</author><pubDate>Fri, 12 May 2017 23:34:38 +0800</pubDate><description><![CDATA[1，介绍
DOM1级主要定义的是HTML和XML文档的底层结构。DOM2和DOM3级则在这个结构的基础上引入了更多的交互能力，也支持了更高级的XML特性。
DOM2和DOM3级分为许多模块（模块之间具有某种关联），分别描述了DOM的某个非常具体的子集。这些模块如下。 DOM3级又增加了“XPath”模块和“加载与保存”（Load and Save）模块。
DOM2和3级的目的在于扩展DOM API，]]></description><category></category></item><item><title><![CDATA[JavaScript学习-DOM扩展_专有扩展]]></title><link>https://blog.youkuaiyun.com/theroadofprogrammers/article/details/71437487</link><guid>https://blog.youkuaiyun.com/theroadofprogrammers/article/details/71437487</guid><author>theroadofprogrammers</author><pubDate>Mon, 08 May 2017 23:51:53 +0800</pubDate><description><![CDATA[1，介绍
有大量专有的DOM扩展没有成为标准，但这并不是说它们将来不会被写进标准。
2，children属性
这个属性是HTMLCollection的实例。
只包含元素中同样还是元素的子节点，除此之外，children属性与childNodes没有什么区别。
3，contains()方法
确定某个节点是不是另一个节点的后代。
支持contains()方法的浏览器有IE、Firefox 9+、Safa]]></description><category></category></item><item><title><![CDATA[JavaScript学习-DOM扩展_HTML5]]></title><link>https://blog.youkuaiyun.com/theroadofprogrammers/article/details/71154338</link><guid>https://blog.youkuaiyun.com/theroadofprogrammers/article/details/71154338</guid><author>theroadofprogrammers</author><pubDate>Wed, 03 May 2017 20:38:49 +0800</pubDate><description><![CDATA[1，与类相关的扩充
getElementsByClassName() 
可通过Document对象及所有HTML元素调用。
接收一个参数，包含一或多个类名的字符串。传入多个类名时，类名的先后顺序不重要。
返回带有指定类的所有元素的NodeList。
classList属性 
在操作类名时，通过className属性的话，若是多个类名一起的字符串，那么修改类名的时候，就需要有关于字符串操作的方法来修改]]></description><category></category></item><item><title><![CDATA[JavaScript学习-DOM扩展_元素遍历]]></title><link>https://blog.youkuaiyun.com/theroadofprogrammers/article/details/71142208</link><guid>https://blog.youkuaiyun.com/theroadofprogrammers/article/details/71142208</guid><author>theroadofprogrammers</author><pubDate>Wed, 03 May 2017 19:34:03 +0800</pubDate><description><![CDATA[1，介绍
对于元素间的空格，IE9及之前的版本不会反悔文本节点，而其他所有浏览器都会返回文本节点。这样就导致了再使用childNodes和firstChild等属性时的行为不一致。为了弥补这一差异，而同时DOM规范不变，Element Traversal规范新定义了一组属性。
2，添加的5个属性
childElementCount:返回子元素（不包括文本节点和注释）的个数。
firstElement]]></description><category></category></item><item><title><![CDATA[JavaScript学习-DOM扩展_选择符API]]></title><link>https://blog.youkuaiyun.com/theroadofprogrammers/article/details/71075179</link><guid>https://blog.youkuaiyun.com/theroadofprogrammers/article/details/71075179</guid><author>theroadofprogrammers</author><pubDate>Mon, 01 May 2017 20:51:17 +0800</pubDate><description><![CDATA[JavaScript学习-DOM扩展-选择符API1，介绍
根据CSS选择符查询DOM文档中某个模式匹配的元素。
2，Selectors API Level 1
核心是两个方法：querySelector()和querySelectorAll()。通过Document及Element类型的实例调用它们。
querySelector()参数接收一个CSS选择符，返回与该模式匹配的第一个元素，若没找到，]]></description><category></category></item><item><title><![CDATA[JavaScript学习-DOM操作技术]]></title><link>https://blog.youkuaiyun.com/theroadofprogrammers/article/details/70877259</link><guid>https://blog.youkuaiyun.com/theroadofprogrammers/article/details/70877259</guid><author>theroadofprogrammers</author><pubDate>Thu, 27 Apr 2017 19:46:58 +0800</pubDate><description><![CDATA[1，动态脚本
创建动态脚本也有两种方式插入外部文件代码示例，也可以把这个元素添加到元素中function loadScript(url){
    var script = document.createElement("script");
    script.type = "text.javascript";
    script.src = url;
    document.body.app]]></description><category></category></item><item><title><![CDATA[JavaScript学习-Text类型]]></title><link>https://blog.youkuaiyun.com/theroadofprogrammers/article/details/70545805</link><guid>https://blog.youkuaiyun.com/theroadofprogrammers/article/details/70545805</guid><author>theroadofprogrammers</author><pubDate>Sun, 23 Apr 2017 20:51:56 +0800</pubDate><description><![CDATA[1，介绍
表示文本的节点。
可以包含纯文本，转义后的HTML字符，但不能包含HTML代码。
代码示例<!-- 没有内容，也就没有文本节点 -->
<div></div><!-- 有空格，因而有一个文本节点 -->
<div> </div><!-- 有内容，因而有一个文本节点 -->
<div>hello world!</div>2，属性
nodeType的值为3。
nodeName的值为“#text]]></description><category></category></item><item><title><![CDATA[JavaScript学习-Element类型]]></title><link>https://blog.youkuaiyun.com/theroadofprogrammers/article/details/70477897</link><guid>https://blog.youkuaiyun.com/theroadofprogrammers/article/details/70477897</guid><author>theroadofprogrammers</author><pubDate>Sat, 22 Apr 2017 22:46:00 +0800</pubDate><description><![CDATA[1，介绍
Element类型用于表现XML或HTML元素，提供了对元素标签名、子节点及特性的访问。
2，获取标签名
nodeName属性和tagName属性这两个属性会返回相同的值，以下面元素为例：<div id="myDiv"></div>可以像下面这样取得这个元素及其标签名var div = document.getElementById("myDiv");
alert(div.tagName)]]></description><category></category></item><item><title><![CDATA[JavaScript学习-Document类型]]></title><link>https://blog.youkuaiyun.com/theroadofprogrammers/article/details/70249551</link><guid>https://blog.youkuaiyun.com/theroadofprogrammers/article/details/70249551</guid><author>theroadofprogrammers</author><pubDate>Wed, 19 Apr 2017 23:54:19 +0800</pubDate><description><![CDATA[1，介绍
document对象是HTMLDocument(继承自Document类型)的一个实例，表示整个HTML页面。
document对象是window对象的一个属性，可作为全局对象访问。
2，属性
documentElement该属性始终指向元素
示例var html = document.documentElement;
alert(html === document.childNodes[]]></description><category></category></item><item><title><![CDATA[JavaScript学习-DOM-Node类型]]></title><link>https://blog.youkuaiyun.com/theroadofprogrammers/article/details/70229834</link><guid>https://blog.youkuaiyun.com/theroadofprogrammers/article/details/70229834</guid><author>theroadofprogrammers</author><pubDate>Tue, 18 Apr 2017 16:30:57 +0800</pubDate><description><![CDATA[1，介绍
DOM(文档对象模型)是针对HTML和XML的一个API（应用程序编程接口）
DOM描绘了一个层次化的节点树，允许开发人员添加、移除和修改页面的某一部分。
DOM已经成为表现和操作页面标记的真正的跨平台、语言中立的方式。
2，节点
特点综述 
节点分为几种不同的类型，每种类型分别表示文档中不同的信息（或）标记。
每个节点都拥有各自的特点、数据和方法，另外也和其他节点存在某种关系。
节点之间]]></description><category></category></item><item><title><![CDATA[JavaScript学习-history对象]]></title><link>https://blog.youkuaiyun.com/theroadofprogrammers/article/details/70166149</link><guid>https://blog.youkuaiyun.com/theroadofprogrammers/article/details/70166149</guid><author>theroadofprogrammers</author><pubDate>Fri, 14 Apr 2017 01:40:22 +0800</pubDate><description><![CDATA[1，介绍
history对象保存着用户上网的历史记录，从窗口被打开的那一刻算起。
出于安全原因，开发人员无法得知用户浏览过的URL。
不过可以在不知道实际URL的情况下实现后退和前进。
2，go()方法
代码说话
//后退一页
history.go(-1);
//前进一页
history.go(1);
//前进两页
history.go(2);3，back()和forward()方法
顾名思义实现后]]></description><category></category></item><item><title><![CDATA[JavaScript学习-screen对象]]></title><link>https://blog.youkuaiyun.com/theroadofprogrammers/article/details/70165652</link><guid>https://blog.youkuaiyun.com/theroadofprogrammers/article/details/70165652</guid><author>theroadofprogrammers</author><pubDate>Fri, 14 Apr 2017 01:28:54 +0800</pubDate><description><![CDATA[1，介绍
screen对象在JavaScript编程中用处不大。
screen对象基本上只用来表明客户端的能力。其中包括浏览器窗口外部的显示器信息，如像素宽度和高度等。
2，screen属性
每个浏览器中的screen对象都包含着各不相同的属性。]]></description><category></category></item><item><title><![CDATA[JavaScript学习-navigator对象]]></title><link>https://blog.youkuaiyun.com/theroadofprogrammers/article/details/70148782</link><guid>https://blog.youkuaiyun.com/theroadofprogrammers/article/details/70148782</guid><author>theroadofprogrammers</author><pubDate>Wed, 12 Apr 2017 23:09:55 +0800</pubDate><description><![CDATA[1，介绍
navigator对象是所有支持JavaScript的浏览器所共有的。
每个浏览器中的navigator对象都有一套自己的属性。下表列出了存在于所有浏览器中的属性和方法，以及支持他们的浏览器版本。 
 2，检测插件
对于非IE浏览器，可以使用plugins数组来达到这个目的plugins数组中每一项都包含下列属性 
name:插件的名字。
descrition:插件的描述。
filenam]]></description><category></category></item><item><title><![CDATA[JavaScript学习-location对象]]></title><link>https://blog.youkuaiyun.com/theroadofprogrammers/article/details/70137803</link><guid>https://blog.youkuaiyun.com/theroadofprogrammers/article/details/70137803</guid><author>theroadofprogrammers</author><pubDate>Wed, 12 Apr 2017 01:17:42 +0800</pubDate><description><![CDATA[1，介绍
location是最有用的BOM对象之一，它提供了当前窗口中加载的文档有关的信息，还提供了一些导航功能。
它既是window对象的属性，也是document对象的属性。
它将URL解析为独立的片段，让开发人员可以通过不同的属性访问这些片段，下表列出了location对象的所有属性。 2，查询字符串参数
其中通过上表的属性访问URL包含的查询字符串的属性并不方便。可以像下面这样创建一个函数，]]></description><category></category></item><item><title><![CDATA[JavaScript学习-间歇调用和超时调用]]></title><link>https://blog.youkuaiyun.com/theroadofprogrammers/article/details/70048914</link><guid>https://blog.youkuaiyun.com/theroadofprogrammers/article/details/70048914</guid><author>theroadofprogrammers</author><pubDate>Tue, 11 Apr 2017 10:58:54 +0800</pubDate><description><![CDATA[setTimeout()方法(超时调用）接收两个参数： 
要执行的代码 
可以是一个包含JavaScript代码的字符串（和eval()函数中使用的字符串一样），也可以是一个函数
以毫秒表示的时间
clearTimeout() 
var timeoutId = setTimeout(function(){
    alert("Hello world");
},1000);// 取消
clearTi]]></description><category></category></item><item><title><![CDATA[JavaScript学习-window对象]]></title><link>https://blog.youkuaiyun.com/theroadofprogrammers/article/details/69663512</link><guid>https://blog.youkuaiyun.com/theroadofprogrammers/article/details/69663512</guid><author>theroadofprogrammers</author><pubDate>Fri, 07 Apr 2017 23:40:33 +0800</pubDate><description><![CDATA[1介绍
2全局作用域
3窗口关系及框架
4窗口位置
5窗口大小
6导航和打开窗口1，介绍
BOM介绍 
ECMAScript是JavaScript的核心，如果要在Web中使用JavaScript，那么BOM（浏览器对象模型）则无疑才是真正的核心。
BOM提供了很多对象，用于访问浏览器的功能，这些功能与任何网页无关。
浏览器提供商会按照各自的想法区扩展它，于是，浏览器之间共有的对象就成了事实上的标准。]]></description><category></category></item><item><title><![CDATA[JavaScript学习-私有变量]]></title><link>https://blog.youkuaiyun.com/theroadofprogrammers/article/details/69489028</link><guid>https://blog.youkuaiyun.com/theroadofprogrammers/article/details/69489028</guid><author>theroadofprogrammers</author><pubDate>Fri, 07 Apr 2017 00:01:13 +0800</pubDate><description><![CDATA[1，简述
任何在函数中定义的变量，都可以认为是私有变量，因为不能在函数的外部访问这些变量，私有变量包括函数的参数，局部变量和在函数内部定义的其他函数。
我们把有权访问私有变量和私有函数的公有方法称为特权方法，基本模式如下代码所示：function MyObject(){
    // 私有变量和私有函数
    var privateVariable = 10;    function privat]]></description><category></category></item><item><title><![CDATA[JavaScript学习-模仿块级作用域]]></title><link>https://blog.youkuaiyun.com/theroadofprogrammers/article/details/69276006</link><guid>https://blog.youkuaiyun.com/theroadofprogrammers/article/details/69276006</guid><author>theroadofprogrammers</author><pubDate>Wed, 05 Apr 2017 18:14:58 +0800</pubDate><description><![CDATA[1，介绍
JavaScript没有块级作用域的概念，在块语句中定义的变量，实际上是在包含函数中而非语句中创建的。
2，语法
可以用匿名函数来模仿块级作用域，块级作用域通常称为私有 作用域，语法如下：(function(){
    // 这里是块级作用域
})();
3，使用
无论什么地方，只要临时需要一些变量，就可以使用私有作用域，例如：function outputNumbere(count){]]></description><category></category></item></channel></rss>