打开主菜单

少前百科GFwiki β

更改

GFwiki:常用代码

删除1,083字节2020年7月30日 (四) 15:33
(编辑摘要被移除)
==JavaScript编写规范与bug收录==
本章节收录编辑在写widget与gadget时遇到的bug及解决方案,以做备忘
===ajax\XHRequest与[//www.mediawiki.org/wiki/Extension:Lazyload Extension:Lazyload]兼容的问题===
*经测试,通过异步加载请求的内容中,若含有通过解析器函数解析过的<pre><nowiki>[[文件:Foo.png]]</nowiki></pre>的图片,在部分浏览器下将无法使用[//www.mediawiki.org/wiki/Extension:Lazyload Extension:Lazyload],导致图片无法显示。
*初步通过将lazyload的挂钩脚本在异步请求成功后重新执行一次<pre><nowiki>$('.external-image, img[data-url]').lazyload()</nowiki></pre>得到了解决,但是由于Resourceloader经常抽风,会造成即使加载成功了ext.lazyload模块,以上脚本仍然不可以使用的情况。
*因此 采用try catch(e)的写法,若遇到Resourceloader无法加载模块的情况下,直接使用$.getScript来获取lazyload组件的情况<pre><nowiki> try{$('.external-image, img[data-url]').lazyload();}catch(e){console.warn("Resource Loader error, try to get Script Directly");$.getScript("/extensions/Lazyload/modules/lazyload.js")}</nowiki></pre>
===ResourceLoader在加载js扩展时需要重复执行命令的情况===
*一般情况下,通过Resourceloader加载的js扩展在执行完毕后会从网页中脱离,需要重复执行命令时,可通过<pre>mw.loader.load('模块名称');</pre>加载,即可在同一页面中重复执行。
*解决办法
*# 刷新页面;
*# 直接将js模块作为gadget、widget载入或者写入common.js中。直接将js模块作为gadget、widget载入。
(用户名被删除)