如何删除ckeditor的状态栏 [Web前端]

post by 朦朧中的罪惡 / 2010-5-14 12:44 Friday

如何移除ckedior的状态栏上的元素路径显示和彻底移除状态栏?

点击查看原图

去ckeditor的官方文档库查找了一番,解决方案如下:

移除元素路径的方法(上图中状态栏显示的 body p):

在config.js中配置以下参数

config.removePlugins = 'elementspath';

这玩意实际上是个ckedior自带的插件

彻底移除状态栏的方法:

在config.js中配置以下参数,其实是将ckedior窗口大小调整功能关闭

config.resize_enabled = false;

清空浏览器缓存刷新后即可看到效果

点击查看原图

标签: JavaScript

菊花文和边框文实现原理 [Javascript]

post by 朦朧中的罪惡 / 2010-4-13 12:12 Tuesday

最近网上开始流行神奇的菊花文和边框文,比原来的火星文更容易读取也更容易突破关键词防御系统

菊花文表现形式为:朦҉胧҉中҉的҉罪҉恶҉ 

边框文表现形式为:[̲̅朦̲̅胧̲̅中̲̅的̲̅罪̲̅恶̲̅]

刚开始很诧异这个玩意是怎么弄出来的,跑去看了一下转换器的源码才明白了原理:

原理其实很简单,只是将标准的文字中参入了一些特殊字符而已

比如说原文为 朦胧中的罪恶,转换后实际的内容是 朦{字符}胧{字符}中{字符}的{字符}罪{字符}恶

由于符号比较特殊,没有盖住前后的字体,才造成了这种假象

菊花文的符号是   ҉ ҉     ASCII unicode码为 1161

边框的符号是    ̲̅  ASCII unicode 码为773和 818

按照这个原理,我们可以找出更多的神奇符号来作出神奇的文字,这里有unicode字符表

最后不得不佩服一下中国人的智慧,呵呵

下面是边框文和菊花文的转换代码,语言为JavaScript

点击查看原图

标签: JavaScript 原创

JavaScript在不同浏览器下取得鼠标绝对位置函数 [Javascript]

post by 朦朧中的罪惡 / 2010-3-3 14:32 Wednesday

首先不同浏览器中event位置属性的分析:

1. IE的event.x,event.y是以事件触发元素的父元素外界为参考点(不包括滚动距离)
2. Firefox的event.pageX,event.pageY是以body元素为参考点(包括滚动距离)
3. event.clientX,event.clientY以浏览器左上角为参考点(不包括滚动距离)
4. IE的event.offsetX,event.offsetY和Firefox的event.layerX,event.layerY以事件触发元素内界的左上角为参考点(包括滚动距离,当有边框时,可能出现负数)

然后是DOM对象高度属性分析

1. scrollHeight: 获取对象的滚动高度
2. scrollLeft:设置或获取位于对象左边界和窗口中目前可见内容的最左端之间的距离
3. scrollTop:设置或获取位于对象最顶端和窗口中可见内容的最顶端之间的距离
4. scrollWidth:获取对象的滚动宽度
5. offsetHeight:获取对象相对于版面或由父坐标 offsetParent 属性指定的父坐标的高度
6. offsetLeft:获取对象相对于版面或由 offsetParent 属性指定的父坐标的计算左侧位置
7. offsetTop:获取对象相对于版面或由 offsetTop 属性指定的父坐标的计算顶端位置

有了以上分析,写出两个取位置的函数

// 取X轴位置
function mouseX(evt) {
    // firefox
    if (evt.pageX) return evt.pageX;
    // IE
    else if (evt.clientX)
        return evt.clientX + (document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft);
    else return null;
}
// 取Y轴位置
function mouseY(evt) {
    // firefox
    if (evt.pageY) return evt.pageY;
    // IE
    else if (evt.clientY)
        return evt.clientY + (document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop);
    else return null;
}

标签: JavaScript

利用javascript闭包特性给setInterval(setTimeout)传递参数 [Web前端]

post by 朦朧中的罪惡 / 2009-10-22 12:26 Thursday

function doSomething(paramA, paramB, paramC) {
    /*

       返回一个由函数表达式创建的匿名内部函数的引用 - 闭包

   */
    return (function() {
        /*

            这个内部函数将通过 - setInterval- 执行,

            而且当它执行时它会读取并按照传递给外部函数的参数行事:

       */
        paramA[paramB] = paramC;
    });
}

/*

   调用这个函数将返回一个在其执行环境中创建的内部函数对象的引用。

   传递的参数最终将作为外部函数的参数被内部函数使用。

   返回的对内部函数的引用被赋给一个全局变量

*/
var functRef = doSomething(menu, "display", "none");
/**//* 调用 setInterval函数,将赋给变量 - functRef - 的内部函数的引用作为传递的第一个参数:- */
setInterval(functRef, 500);

标签: JavaScript

jquery修复ie6不支持position: fixed;的插件 [Web前端]

post by 朦朧中的罪惡 / 2009-9-25 15:41 Friday


<!--[if lte IE 7]>
<script type="text/javascript">
(function($) {
    $.fn.pozFixed = function(params) {
        var defaults = {
            top : 400,
            left : '50%',
            interval:100
        };
        defaults = $.extend(defaults,params);    
        return this.each(function(i,o) {
            var $this = $(this);
            this.fixPosition = function() {
            var st = $().scrollTop(); 
                $this.css({
                    top:st + defaults.top,
                    left:'50%'
                });              
            };
            $this.css({position:'absolute',top:defaults.top,left:"50%"});
            setInterval(this.fixPosition,defaults.interval);
        });
    };
})(jQuery);
</script>
<![endif]-->

标签: JavaScript 原创

FireFox和IE下使用ajax的一些小问题总结 [Web前端]

post by 朦朧中的罪惡 / 2009-6-17 20:07 Wednesday

1、FireFox下使用xmlHttpRequest的send方法是必须指定参数。即.send();是无效的,如果没有参数要使用.send(null);.
2、FireFox下处理DOM时把空白也当作是一个节点。因此为了避免出现一些意想不到的问题,要尽量不要使用空白(包括换行、空格等等)。
3、使用createElement创建节点时,IE下可以用document.createElement(”<tr>”);但是FireFox下只能用document.createElement(”tr”);
4、添加子节点,IE可以用add,但是FireFox下不可以。FireFox下只能用appendChild.
5、如果IE下往table节点里添加tr达不到预期效果,常常是因为没有添加tbody节点。
6、IE下使用javascript设定td的colspan无效是因为大小写的问题,必须使用colSpan。
7、FireFox下输出从服务器端返回XML时注意开头不能有空白(包括换行、空格等),否则会有解析错误。
8、使用xmlHTTPRequest实现分页效果时,每次处理完一次请求要把xmlHTTPRequest对象消掉,下次使用时再重新构建。

标签: JavaScript FireFox

ie6下不运行gzip压缩后javascript代码的Bug [疑难杂症]

post by 朦朧中的罪惡 / 2008-12-10 22:35 Wednesday

这是我在项目中遇到的问题:

为了提高客户端javascript文件的加载速度,我将所有的javascript代码通过php进行gzip压缩后再发给浏览器,原来200多kb的脚本文件压缩后之只有30多kb,浏览加载速度非常快用户体验很好,但是奇怪的问题出现了,在ie7,firefox下运行的非常良好的脚本到了ie6下就没了反应,每次都要刷新网页后才脚本才能运行.

跑到微软那一查,给的答复让我吐血:

Do not enable HTTP compression for the script files

请不要对脚本文件开启http压缩

只好在服务器端增加对浏览器的识别代码,如果是ie6,就不压缩脚本文件了

虽然脚本能运行了,可是用户体验就...

哎,我恨ie 6

标签: JavaScript 网页开发 原创

IE的document.getElementById混淆name和id属性的BUG [Web前端]

post by 朦朧中的罪惡 / 2008-10-15 22:54 Wednesday

前不久我在开发中遇到了在IE下Form.submit()的一个BUG,没想到IE的BUG还不只这么一个,下面我来介绍我遇到的另外一个关于document.getElementById的BUG.

BUG演示

页面演示在这里,代码在下面


  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
  2. <html xmlns="http://www.w3.org/1999/xhtml"> 
  3. <head> 
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
  5. <title>IE document.getElementById BUG DEMO</title> 
  6. </head> 
  7.  
  8. <body> 
  9. <script language="javascript"> 
  10. /*  
  11.     IE document.getElementById BUG 演示DEMO  
  12.     作者:朦朧中的罪惡  
  13.     博客:http://be-evil.org  
  14. */  
  15. function changeValue()  
  16. {  
  17.     var username = document.getElementById('username');  
  18.     username.value = 'Whahaha';  
  19. }  
  20. </script> 
  21. <form action="IE_BUG2.html" method="get"> 
  22. <p>name:<input type="text" name="username" /></p> 
  23. <p>name2:<input type="text" id="username" name="name" /></p> 
  24. <p><input type="button" value="改变" onclick="changeValue();" /></p> 
  25. </form> 
  26. </body> 
  27. </html> 

 

很简单的一段代码,看上去似乎没有任何错误,但是在IE下点击改变按钮后,被改变值的对象居然是第一个name属性为username的input对象.而不是第二个id属性为username的对象. 

 

 

阅读全文>>

标签: JavaScript 原创

IE中使用JavaScript中调用form.submit()提示“对象不支持此属性和方法”问题研究 [疑难杂症]

post by 朦朧中的罪惡 / 2008-8-20 17:32 Wednesday

今天在项目中无意中遇到的一个神奇的问题,特此记录。 

首先我们看看以下代码,测试页面可以看这里,页面的功能和逻辑很简单。

这段代码从逻辑上看没有任何错误和BUG,理论上是可以完全执行的。

<html>
    <head>IE 测试</head>
<body>
<script language="javascript">
/*
======================================
    IE 下 submit 重名测试
    作者:朦朧中的罪惡
    博客:http://be-evil.org
======================================
*/
function dosubmit()
{
   
var theform = document.getElementById('theform');
    theform.submit();
}
</script>
    <form method="post" id="theform">
        <table width="800">
            <tr>
                <td><input type="text" value="测试"></td>
            </tr>
            <tr>
                <td><input type="button" name="submit" value="提交" onclick="dosubmit()"></td>
            </tr>
        </table>
    </form>
</body>
</html>

 

 

==================================================================

本文系原创文章,转载请注明文章源自思想之地 http://be-evil.org,作者:朦胧中的罪恶

==================================================================

如果用Firefox查看这个页面并点击提交按钮,表单会正常提交,但是我们换到IE下面,IE却会提示“对象不支持此属性和方法“ 而停止提交的操作。

这是怎么回事呢?经过我多方的查找资料,发现是提交按钮的name="submit"的属性在捣乱。

此时我们将theform.submit();注释掉,新起一行输入alert(theform.submit.value);刷新页面后再次点击提交,弹出的窗口上会显示”提交“两个字,神奇了!theform.submit居然是提交按钮而不是theform的方法了!

为什么会出现这个问题呢,因为在IE下可以通过 表单.表单元素名称 这样的方式获得一个表单下的所有表单元素,但是巧就巧在这里,如果某个表单元素的名称和表单的方法名重名的话那么IE就会优先将名称解析为某个表单元素,而不是表单的方法,此时就会出现这个神奇的问题了。

标签: JavaScript 原创

Discuz!编辑器附件添加原理不完全研究 [Web前端]

post by 朦朧中的罪惡 / 2008-6-13 13:39 Friday

Discuz!在6.0版的时候推出了自己的编辑器,除了它常用的编辑功能之外有一个很有特色的功能就是附件无上传插入.

用这个这个功能人都会发现在编辑时只要在本地选择了文件附件无需上传即可将它插入到帖子内容中,图文并排在第一次发贴的时候就可以实现,而不像一些传统程序必须上传了附件才可以插入到编辑器中.

作为开发者的我对这个功能实现的方式非常感兴趣,花了一点时间来研读了一下Discuz!编辑器此功能的代码.

本文分析的Discuz!版本为6.0,涉及的javascript和php文件包括

include/javascript/post_attach.js

include/javascript/post_editor.js

include/javascript/bbcode.js

include/newthread.inc.php

代码版权归康盛创想公司所有

阅读全文>>

标签: JavaScript php 原创 Discuz!

1 2