关于判断ie版本的一段js代码


ie = (function() {
var v = 3, div = document.createElement('div'), a = div.all || [];
while (div.innerHTML = '<!--[if gt IE '+(++v)+']><br><![endif]-->', a[0]);
return v > 4 ? v : !v;
}());

这个不同于其他用ua判断浏览器版本的方法。
div.all
all方法只有ie支持。
再利用注释的兼容性方法来判断当前是哪款ie浏览器。

关于As3的flash文件调用As2影片的一些问题

之前忘记记录了,用了这个方法后,单个机器只能打开一个这样的flash文件组,如果在另外一个浏览器(或窗口)弹出就会失效…

案例情况是存在3个swf文件

main.swf(as3)

mask.swf(as2)

reg.swf(as3)

main会导入mask和reg,并会对mask添加一个点击事件让reg弹出。

mask里面本身有部分互动。

问题:

在main调用mask后,发现所有mask里面所有含有事件的元件(包括没有事件的按钮元件)覆盖的范围,都没有main给mask注册的点击效果。但是如果用as3代码写就可以~

因为以后可能有很多这样的东西,所以转as2为as3不够现实,只能想其他办法来解决。

最终方案:

让As2回调As3的函数,实现reg的弹出效果。

具体代码(供参考):

main.swf里面加上如下代码
var localConnection:LocalConnection;
localConnection = new LocalConnection();
localConnection.client = this;//创建本地连接
localConnection.connect("AS3Connection");//参数是接口,根据需要起名字

function As3Action(){
    //as2里面要调用的函数和内容
}

mask.swf所有含有事件的元件(包括没有事件的按钮元件)增加点击事件,并包含如下代码:

var localConnection:LocalConnection = new LocalConnection();
localConnection.connect("AS2Connection");
localConnection.send("AS3Connection","As3Action");

就可以实现main里面需要做的动作了~

让IE也支持圆角

转载自:http://cll.socss.cn/archives/259

css3的圆角属性,能为开发者提高开发的效率。可惜主流的ie6 7 8并不支持该属性。下面介绍一种让ie也支持圆角的方法。

1.首先要下载一个压缩包,里面有一个微软的脚本文件(11KB),里面是IE利用VML矢量可标记语言作为画笔绘出圆角。

下载地址:http://cll.socss.cn/wp-content/uploads/2011/07/iecss3.zip

使用方法:

.main{

border: 2px solid #C0C0C0;

-moz-border-radius: 10px;

-webkit-border-radius: 10px;

border-radius: 10px;

position:relative;

z-index:2;

behavior: url(此处为ie-css3.htc文件的绝对路径);

Webkit内核的浏览器支持“-webkit-border-radius:  10px;”属性(10px是圆角半径),可以直接解析出圆角;Firefox浏览器支持“-moz-border-radius:  10px;”属性,也是可以直接解析出圆角;IE系浏览器则需要加上“border-radius: 10px;”的属性。

 

需要注意以下几点:

1、behavior的url里一定要填写ie-css3.htc的绝对路径,因为  IE浏览器找该文件是相对当前html文件路径来找的。

2、一定要有定位属性:position:relative;

3、因为在IE浏览器下这些css3效果的实现是要借助于VML,由VML绘制圆角或是投影效果,所以还需要一个z-index属性。z-index属性最好设置得比较大,如2。

4、如果在IE浏览器下某些模块无法用此渲染,可以试着绝对定位相应的层,即加上“ width: 400px; height:400px;”属性。

ps:因为该方法使用脚本来实现的,实际应用过程中可能会出现很多意想不到的问题,所以在正式商业项目中还是慎用的好。

 

我的使用经验:这个外部文件实际上就是一套js,会根据你的使用情况往页面上加一些代码来辅助实现你需要的效果。

这些代码主要是一个层,有行内样式,是根据你圆角对象相对屏幕的定位而产生的,那么就出现个问题~

如果你的对象的父级有position属性,但是又不在页面原点(0,0),就会产生错位问题,这个要注意一下。

当然你也可以自己去修改ie-css3.htc这个文件里面的js来达到你想要的效果。

 

js去掉字符串中的空格和每四个字符加一个空格

今天做个充值框,卡号一栏的需求是。

每四个要加个空格。主要是为了让用户方便辨认自己是否输入有误。

<input type=”text” class=”ui-inputText fl ui-cardnum-show” value=”” /><!–这个负责显示–>
<input type=”hidden” class=”ui-cardnum-hide” value=”” /><!–用这个传值–>

 

$(“.ui-cardnum-show”).focus(function(){
$(this).keyup(function(){
var num=$(this).val();
num=num.replace(/s+/g,””);//将输入的内容去掉空格传入ui-cardnum-hide
$(this).next().val(num);
num=num.replace(/(.{4})/g,”$1 “);//将ui-cardnum-hide得到的内容每4个字符插入一个空格传回去
$(this).val(num);
});
})

 

关于织梦CMS的infolink.lib.php和联动的一些浅见

今天用dede试做一个文章列表的联动功能,发现这东西还挺纠结。

1.默认的貌似是写死的,想改变什么都要改代码。

2.默认的是二级的,可是我只要一级。

3.要改的文件还不止一个。

说到底这个东西最后要改的是一个叫infolink的这个标签,你可以找到infolink.lib.php这个文件,通过对这个文件的修改,可以的达到你的目的。

基本操作我就不说了,我是个写html,php是苦手,看到php文件只能一点点缕逻辑。

如果你跟我的情况一样,可以参考我下面的方法。

建立你自己的联动菜单,并在自己的分类模版中建立相关字段(这里要注意一下,字段的类别要选择联动的,不要选择单选、多选或option)。

在include/taglib/下找到infolink.lib.php并打开。

默认是两个菜单。一个是-地区-对应的名字是-nativeplace-,一个是-信息类型-对应的名字是-infotype-。

如果你想替换一个,你可以拿你的字段名称替换掉这里其中的一个(我在这里全部替换了,其实可以不全部替换,如果你弄不明白就按照我的全部替换…)。

然后在include/下找到arc.sglistview.class.php并打开,同样是全部替换掉相应的字段名。

(替换的时候要注意一下$em_infotypes这种格式写出来的后面有个“s”)

最后你就可以在自己的页面上用了。

用法是与原来的没有大变化

{dede:infolink}{/dede:infolink}

只是在引用变量的时候把人家的[field:nativeplace/]改成自己的[field:自定义字段/]

 

________我华丽么——————

 

然后说一下变成一级的问题,网上查到的不太靠谱,我给个我的方法。

还是include/taglib/下找到infolink.lib.php并打开。

找到

$sontype = ( ($nativeplace% 500 != 0) ? $nametype : 0 );
        $toptype = ( ($nativeplace% 500 == 0) ? $nativeplace: ( $nativeplace-($nametype%500) ) );       
        $fields[‘nativeplace’] = “<a href='{$baseurl}plus/list.php?channelid={$channelid}&tid={$typeid}&nativeplace={$toptype}&infotype={$infotype}’> <b>{$em_nativeplace[$toptype]}</b></a> “;
        foreach($em_nativeplaces as $eid=>$em)
        {
            if($eid < $toptype+1 || $eid > $toptype+499) continue;
            if($eid == $nativeplace) {
                $fields[‘nativeplace’] .= ” <b>{$em}</b>rn”;
            }
            else {
                $fields[‘nativeplace’] .= ” <a href='{$baseurl}plus/list.php?channelid={$channelid}&tid={$typeid}&nativeplace={$eid}&infotype={$infotype}’>{$em}</a>rn”;
          }
 }

注释掉(这个字段名我改过了,)

把上面else前面的内容拿过来就好了,如果你懂点代码的话可以自己加判断来确定哪个是选中的,我就不赘述了,有问题可交流。

 

 

 

关于织梦后台各种白屏问题的解决方法

首先查看你的php版本是不是5.4+,织梦版本是不是V57_Sp1,如果是,或者接近,请往下看。

在你的后台目录下的inc子目录中找到userlogin.class.php文件。

然后注释掉所有跟@session_register@session_unregister有关的语句,并注释掉。

再看看你的页面好使没有~

 

我只是解决了白屏问题,不知道这样注释会不会有后遗症,等待php高能人员解答。

关于input中type属性的切换

之前的几个项目一直纠结一个问题,就是input的type值可不可以通过什么方法直接切换。以保证密码输入框可以做到英文字符和点点之间自行切换,而不是覆盖一个文本层在上面坐事件或者别的什么方法。

好吧我还是上图吧:

input-type

input-type2

之前发现js里面有一个obj.type的属性可以直接改input里面的type值。

结果昨天测试发现不兼容ie9以下的ie浏览器。顿时泪奔。

所以现在的做法 依然是覆盖一个i额层在这个password上面来解决这个问题。

还有一个方法就是给3个跟password有关的input

<input class=”input1″ type=”text” value=”文字内容”/>

<input class=”input2″ type=”password” value=”密码内容”/>

<input class=”input3″ type=”hidden” value=”用来接收密码,提供给程序”/>

然后无非就是全部隐藏,需要显示文字的时候显示input1,input1获得焦点时隐藏掉input1,显示input2并把焦点光标给input2~剩下的逻辑你懂的。

 

iframe框架 跳出所有的框架,跳转到你所要的地址

以下都是在iframe 框架中

1,<a href=”http//:www.baidu.com” target=”_blank”>百度</a>

2,

javascript:
function window.onload()
{
if(window.parent.length>0)
window.parent.location=location;
}

或者:

<script>

if (window != top)
top.location.href = location.href;

</script>

3,自动跳出iframe的代码
<script type=”text/javascript”>
if (top.location !== self.location) {
top.location=self.location;
}
</script>

4,在框架页内的退出操作:
<script type=”text/javascript”>
if (top.location !== self.location) {
top.location = “../index.jsp”;//跳出框架,并回到首页
}
</script>