为毛Javascript的replace支持回调函数啊,以及关于ajax返回值和feelyblog更新了
好吧。。这么长的标题我都不知道会怎么显示。
为毛Javascript的replace支持回调函数啊!!!!
害得我多费了好多时间。。。。
好吧,正文开始。
一切要从我今天突然脑洞大开想把bilibili的播放器引用到自己博客来说起。
以下是最后完成的引用代码:在文章中任何一个地方出现这个代码都可以。不过因为bilibili播放器比较长。所以还是放到一个新段落里比较好。
1 | [video][[bilibiliav896743p1]][/video] |
以下为av896743【玄觞、王朝——空待】
av896743p1
(↑↑2014年2月2日更新——原来演示视频被up主自己删除了。。于是我只能换一个↑↑)
网页上这部分,我用正则表达式去匹配。找到[video][/video]
标签括起来的部分,然后找出里面的av号和分p号。替换成播放器。完成。嗯,就是这样一个过程。
然后播放器是只接受cid的,不是分p号。于是我去注册了一个api。。。。。为了方便的获取cid。为了节省HTML模板的代码,我在php这里就渲染成最后的HTML代码。显示模板那边只要引用就可以了。
嗯,这个api如下:
http://www.namido.net/search/biliapi/avid/[av号]/page/[分p号]
比如av894517的p1就可以直接去请求http://www.namido.net/search/biliapi/avid/894517/page/1
然后我在怎么把请求结果显示回页面上时遇到了问题。请求这东西是要用ajax的啊。。。。。。。
然后突然发现。。replace居然可以用回调函数。。。。
于是我非常简单的把最后的代码写成了这个样纸:
1 | contentHtml=contentHtml.replace(/([video][[bilibiliav)(.+?)(*)(.+?)(]][/video])/g,function($0,$1,$2,$3,$4,$5){ |
就在写这一段代码的时候,我才发现,原来ajax异步读取是不能返回的。
嗯,知道了这个结论就容易想通原因了,不知道什么时候读取完嘛。所以才要回调函数这种东西。
于是就像我上面写的那样。最后换了$.ajax方法。把异步关掉,这才有了返回值这种东西。
以上这些已经更新到了新的Feelyblog r22中。
(5月2日更新——现在这些也已经在这个Wordpress博客中了,不过我比较懒,都是靠主题实现的,而没有单独做成插件)
2015年10月21日更新
新程序这些还没适配。。。