Sep 26

我的一个老插件,我把功能完善了一下,现在用AJAX方式上传,而且上传前可以预览图片(FireFox基于安全策略不允许上传前查看本地文件,所以在FF上禁用了预览功能;IE7则需要把使用本插件的站点加入信任站点列表,注1),查看图像尺寸和文件大小。

一.先看看效果:

The player will show in this paragraph

图片文件上传成功后直接生成WP-BCastr所需代码。

二.下载和安装:

  1. 下载文章附件的插件安装包;
  2. 解压到硬盘,上传整个multiuploader目录到你的插件目录,通常是/wp-content/plugins/
  3. 在WordPress的插件控制面板激活Multi Image Uploader这个插件就行了。

三.使用:

插件在文章发表界面的QuickTag上面创建了Multi Uploader按钮,点击即可打开上传界面,一看就明白了。

注1:

在Internet Explorer 7菜单栏,点工具---Internet选项
选中安全选项卡,可信任站点,然后把论坛的网址http://你的站点.com/添加为可信任站点;
注意:不要勾选“对该区域的所有站点要求服务器验证”

或者使用reg文件导入注册表:(将以下内容存为previw.reg文件,双击导入;导入注册表有可能导致您的机器产生严重问题,此脚本经过本人测试有效无害,但仍然提醒您导入之前做好备份。;参考文献:Security and Compatibility in Internet Explorer 7

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BLOCK_LMZ_IMG]
"Maxthon.exe"=dword:00000000
"TheWorld.exe"=dword:00000000
"iexplore.exe"=dword:00000000

注意:请所有下载过2.2.6之前版本的FireFox用户重新下载本插件。

English:

1.Download the Multi Image Uploader WordPress Plugin.
2.Extract the files.
3.Upload the 'multiuploader' folder to the /wp-content/plugins/ directory (do not alter the structure).
4.Go into your WordPress Administration, and activate the Multi Image Uploader Plugin;
5. Multi Image Uploader automatic add a quicktag button for you on new post page.
6.Use it,That's all.:)

Sorry for all FireFox users,Please download version 2.2.6 for FireFox work.


Sep 01

在WordPress使用过程中,有很多情况下,插件的javascript不止一个函数或者功能需要使用window.onload加载自己,我自己这个Blog就有数个,例如SearchNow,FacyToolTip,Google Code Prettify等,还有两个写在我js扩展文件里面的,一个用于转换target="_blank"到rel="external"的函数externallinks,以及去除所有点击虚线框的函数RemoveDotLine。

其实以前经常出问题,主要表现在突然我自己那两个函数不工作了,于是我找过很多关于加载多个windows.onload的文章,如以下列出的方法:


function womOn(){
window.onload = womGo;
}

function womGo(){
for(var i = 0;i < woms.length;i++)
eval(woms[i]);
}
function womAdd(func){
woms[woms.length] = func;
}
var woms = new Array();
/*Now Add Multi Functions:*/
womAdd('hideDiv("rightBox")');
womAdd('ajaxInit()');
womAdd('setHandler("tr","mo","onmouseover","rowHightlight")');
womOn();

以及:


function addOnloadEvent(fnc){
if ( typeof window.addEventListener != "undefined" )
window.addEventListener( "load", fnc, false );
else if ( typeof window.attachEvent != "undefined" ) {
window.attachEvent( "onload", fnc );
} else {
if ( window.onload != null ) {
var oldOnload = window.onload;
window.onload = function ( e ) {
oldOnload( e );
window[fnc]();
};
} else
window.onload = fnc;
}
}
/*Now Add Multi Functions:*/
addOnloadEvent(myFunctionName);
// Or to pass arguments
addOnloadEvent(function(){ myFunctionName('myArgument') });

最后:


function addLoadEvent(func) {
var oldonload = window.onload;
if (typeof window.onload != 'function') {
window.onload = func;
} else {
window.onload = function() {
oldonload();
func();}
}
}
//Sample usage:
addLoadEvent(nameOfSomeFunctionToRunOnPageLoad);
addLoadEvent(function() {
/* more code to run on page load */
});

有时候用其中一个问题就突然解决了,但实际上我不太明白如何解决的。

直到昨天使用Google Code Prettify这个代码高亮插件,又出了问题,我决心搞个明白。

开始我无论用上面哪种方法加载我的那两个函数,均不能成功,于是打开Google Code Prettify的文件,看它如何加载的,它用的是:


window.onload = function(){prettyPrint();};

于是我把那两个函数放进去:


window.onload = function(){
prettyPrint();
externallinks();
removedotline();
};

刷新页面,可以了。但是我不能靠一个插件来加载我自己的功能吧?

仔细想想,为什么FacyToolTip和SearchNow没有影响我的两个加载呢?

打开这两个插件的源文件一看,原来它们都没有用window.onload直接加载自己的函数,而是用了上面我列出的某种方式加载的。

最后解决方案:把我的两个函数放回我的那个扩展js中,用上面的方法加载,然后修改Google Code Prettify,也采用上面列出的的方法加载,刷新页面,可以了。

结论:在WordPress中,任意一个插件直接使用window.onload加载自己的函数,都会造成一定问题。

在那些罗列的加载方式中,它们考虑的都是普通用首页加载所有函数,而没有考虑到WordPress插件的分离性,所以没有提到这个问题。