我的问题:页面中引入了jedate插件所需的js以及css文件,但是页面中并未出现日期选择器。尝试了将这些文件从项目中抽离出来,放在本地发现插件好使,排除插件文件损坏的问题。
页面效果:
排错思路:
tips:百分之八十也许都是jquery引入先后问题,所以可以先查看jquery和插件引入顺序
1.如果插件依赖jQuery ,检查jQuery文件
2.JQuery正常,检查插件文件是否正常
3.都正常就看看是否因引入其他线上的东西而造成影响(注释大法一步步排除)
一、解决插件不生效问题
因为我们整个项目都依赖于jQuery开发,所以我直接排除jquery文件的问题,查看我的项目发现jquery确实在插件之前引入,但是效果未生效,因此我觉得也许是插件有问题,但是将插件抽离出来发现插件好使,瞬间陷入沉思...
经过老大指点开始尝试看看是否引入客户公共部分文件对对其造成影响,接着便发现原来这个项目上一个人写的时候引入的自己的Jquery文件同时还引入可客户线上的jQuery 文件!!!!泪目了,兜兜转转还是jquery文件引入顺序问题。怪我眼睛太小了没发现两个jQuery
将jeDate插件的js文件往后挪一挪,完美解决~~
二:日期选择器上的小图标(上图红色框部分)消失了
正常效果:点击小图标可以快速选择日期
当我点击图标发现那一块可以点击,但是控制台报错,因此也许是css为生效问题,检查控制台报错如下:
百度搜索发现是因为违反了内容安全策略CSP,因此了解了一下CSP,看了很多觉得这篇文章不错,需要的伙伴可以自行查阅内容安全策略(CSP)详解_我最犀利蛮鬼的博客-CSDN博客_csp策略
通过报错不难发现,插件中图标采用的是base64编码,项目中设置了CSP img-src * ,base64格式图片路径违反了这个指令,所以报错,通过network查看请求头发现CSP设置确实如此
因此上报老大,让后端大哥改一下
修改 img-src *; 为 img-src * 'self' data: https:;
修改插曲
修改完之后经过测试发现还是不行,报了一个新错误
经过错误分析发现 img-src指令重复,再次查看network请求头,啊,确实重复了
继续改CSP,最终问题解决~~~~世界完美
三、总结
插件未生效:jQuery文件引入先后问题(特别注意页面中是否多次引入jquery文件)
图标未生效:CSP内容安全策略中设置了指令 img-src * 应该设置 img-src * 'self' data: https:; 允许base64的图片(我这里以防万一设置全了,也可根据需要设置指令值)
附上最终代码效果