向世界分享我的生活与见解
To the world to share my life with insights

换种思路解决NeteaseMusic插件与主题JS冲突问题

使用bigfa开发的Netease Music插件在wp主题中插入音乐是一件很方便的事情,我们只需要插入一个链接,或者是一个ID号码,这样你在网易上喜欢的音乐就可以实时的经由你的网站分享给其它的人了,想想是很激动的。
不过最近因为网站改版更换了WP主题,在使用Netease Music插件时发现,自己的网站可以加载网易云音乐的歌单页面但是却没办法点击播放音乐,为了解决这个问题找了很多的办法,终于在开发者的留言板中找到了一段这样的对话:

用户:能否在js文件里面添加下jQuery.noConflict();防止和别的js产生冲突,经过测试,用这种方法,用begin主题的冲突问题,全部解决了,fancybox也可以弹了,一些按钮也可以点击了

 

bigfa:那是你主题的问题,并不是我插件的问题。

用户:换过好几个用的人比较多的主题,如知更鸟的begin ,大前端的dux,基本上都会产生JS冲突问题,我也知道部分主题不会产生冲突,但是这里我只是提供一个解决冲突的办法而已.

 

bigfa:插件使用的是wordpress内置的jquey库,内置jquery没有$方法,那些主题没有使用匿名自执行函数并用了$就会出问题。我的插件js都适应了匿名自执行函数,并不会污染其他文件。

说白了,出问题都是使用的主题不标准造成的,这和我的插件有什么关系?大家都在同样的环境下,因为他们的不按规矩来难道还需要遵守标准的来做出改变?

你说的问题我全都知道,解决方法我也知道,但是我就是不提供?为什么?我不想给那些问题主题擦屁股,谁的问题找谁去。

最后你说的只有加在出问题的js文件之前才有效。

 

bigfa:用白话讲,他们开车不遵守交通规则把我撞了,我还得负责给他们修车啊?

 

从这段对话中我们可以看出几个问题:
1、导致出现这个问题主要是因为插件的js和主题的js在命名上产生了冲突,导致加载错误,所以不能使用。
2、按照作者的态度,对这种不规范的命名是持反对的,所以不会在插件上去帮忙修复因为主题所照成的错误。
确定了问题之后,我特意找到了提出这个问题的skysmile用户,并且和他沟通了一下。也非常感谢他的热心帮助,但是在这之间我依旧遇到了很多的问题:主题与插件的js冲突不止一处,主题与插件之间的命名冲突导致排查很困难。这样导致了问题处理起来很麻烦,因此我就暂时把问题给搁置了。

但是就在最近这几天,我突然想到了:NeteaseMusic之所以要加载js是因为他是以插件的形式存在于wp主题中的,这样利于我们在wp的后台对其进行管理操作,但是如果我舍弃在后台管理操作,而是直接在页面添加代码调用呢?而且作者之所以开发插件可以使用,那肯定是因为网易云音乐有提供此类功能的接口。

顺着这个想法,我又去网易云的官网查看,果然找到了一个这样的页面:网易云音乐插件。
插件使用教程
网易云音乐提供单曲、专辑、歌单、电台节目的外链播放器,将外链播放器放在论坛、网站上,都可以免费播放。
如何使用外链播放器?
1.在网页版(music.163.com)进入单曲、歌单、专辑、电台节目页面后,点击 “生成外链播放器” 链接。
2.歌单和专辑外链播放器可以选择大中小三种尺寸,单曲和电台节目可以选择中小两种尺寸。你可以选择最适合你网站设计的尺寸。
3.还可以选择是否要自动播放,打上勾后,别人访问网站时播放器会自动开始播放。
4.最后将播放器的代码黏贴到你的网站上,大功告成!
果然根据这个信息,我在自己网页上操作一番后,已经可以正常的在自己网站上调用网易云音乐了,而且也可以实现在播放器上添加音乐网站会自动更新音乐列表。
PS:
1、官网提供了iframe和flash两种html的插入方式,个人建议使用iframe的方式使用。因为现在flash越来越没落了,另外苹果的设备对flash完全是属于不支持的态度,所以权衡一下也是iframe更好一些。
2、本人是小菜鸟,很多技术性的东西就是在大神面前献丑。我只是喜欢把自己的经验分享一下,或许有错,但是无论对错请勿喷。
3、在此非常感谢bigfa为wp主题开发的NeteaseMusic插件,如果可以的话,我还是喜欢用它

未经允许不得转载:维简网 » 换种思路解决NeteaseMusic插件与主题JS冲突问题

分享到:更多 ()

众享 抢沙发

评论前必须登录!