注意JS文件编码和页面编码不一致带来的问题

Filed under: 开发编程 | No Comments »
Posted on

晚上有个基于jqeury的翻屏js特效出了个古怪的问题——在IE7和FF下很正常,而使用IE6的朋友却说特效没出现,错误是翻屏特效的那个js函数未定义。想了无数办法都没解决,后来google到这篇文章才明白过来,js文件本身是gb2312的,而页面编码却是utf-8的,在修改js文件编码格式为utf-8以后,问题得以解决。

页面全部链接在新窗口打开的JS

Filed under: 开发编程 | No Comments »
Posted on
  1. <script>    function openBlank(){    var aa=document.getElementsByTagName("a");    for (var i=0;i<aa.length;i++){      aa[i].target=\'_blank\';    }  }  if (document.all){    window.attachEvent(\'onload\',openBlank);  }  else{    window.addEventListener(\'load\',openBlank,false);  }</script>
Tags :

介绍一个javascript开发利器——Aptana

Filed under: 开发编程 | No Comments »
Posted on

来自:http://www.cnopensource.com/archives/14
下图是一个截图:
code_assist_thumb.png

如何去掉网页上flash周围的虚线框?

Filed under: 开发编程 | 1 Comment »
Posted on

在windows xp sp2以上的浏览器浏览带有flash导航的网页时,flash四周会出现一个虚线框,并且提示”单击激活此控件”,让那上面的按钮必须单击两次才能使用

目前只发现了一种方法,即把flash代码放入js里.

实现一:

<script type=”text/”>
AC_FL_RunContent( ‘codebase’,'http://download.macromedia.com/pub/shockwave/cabs//swflash.cab#version=7,0,19,0′,’width’,'Flash宽度’,'height’,'Flash高度’,'src’,'Flash地址’,'quality’,'high’,'pluginspage’,'http://www.macromedia.com/go/getflashplayer’,'movie’,'Flash地址’ );
</script>

实现二:

<td><SCRIPT> leftmenu(“cCompany”,4,1); </SCRIPT> </td>
<script language=javascript>
function leftmenu(sectiontype,oDN,tDN ){
document.write(‘<OBJECT classid=”clsid:D27CDB6E-AE6D-11cf-96B8-444553540000″ codebase=”http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0” WIDTH=”163″ HEIGHT=”450″ align=”center” id=”Company”>’);
document.write(‘<PARAM NAME=movie VALUE=?>’);
document.write(‘<param name=wmode value=transparent>’);
document.write(‘<PARAM NAME=quality VALUE=high>’);
document.write(‘<PARAM NAME=allowScriptAccess VALUE=sameDomain>’);
document.write(‘<EMBED src=? quality=high bgcolor=#FFFFFF WIDTH=163 HEIGHT=450 TYPE=”application/x-shockwave-flash” PLUGINSPAGE=”http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash”>’);
document.write(‘</EMBED>’);
document.write(‘</OBJECT>’);
}
</script>

创建firefox和IE兼容的两级联动下拉菜单的javascript代码

Filed under: 开发编程 | No Comments »
Posted on

       在公司,我们团队的项目开发与设计正在逐步的要求标准化、规范化。鉴于firefox的使用者比例越来越高,因此项目进入测试阶段后,我们会采用ie和firefox两种浏览器进行测试。问题出来了,在今天的一个项目测试中,IE下支持的两级联动菜单,到了firefox就不支持了。有趣的是,技术部的程序员居然告诉该项目PM,他不会解决。君既自认不能为之,则吾改之矣。经过几分钟的修改,搞定。

原代码如下:

<SCRIPT language=””>

switch (document.coform.province.value) {

case ” :
var labels = new Array(‘请选择城市’);
var values = new Array(”);
break;

case ‘安徽省’ :
var labels = new Array(‘合肥市’,'淮北市’,'淮南市’,'黄山市’,'安庆市’,'蚌埠市’,'巢湖地区’,'池州地区’,'滁州市’,'六安地区’,'马鞍山市’,'宣城地区’,'宿县地区’,'铜陵市’,'芜湖市’,'阜阳市’);
var values = new Array(‘合肥市’,'淮北市’,'淮南市’,'黄山市’,'安庆市’,'蚌埠市’,'巢湖地区’,'池州地区’,'滁州市’,'六安地区’,'马鞍山市’,'宣城地区’,'宿县地区’,'铜陵市’,'芜湖市’,'阜阳市’);
break;

document.coform.citys.options.length = 0;
var j=0;
// 从数组中添加内容
for(var i = 0; i <labels.length; i++) {

document.coform.citys.add(document.createElement(“OPTION”));

document.coform.citys.options[i].text=labels[i];
document.coform.citys.options[i].value=values[i];
if (labels[i]==str)

 j=i;
}


 document.coform.citys.selectedIndex = j; } 
              < /SCRIPT>

<form name=”coform” action=”" method=”post”>

<select NAME=”province” OnChange=”setcitys()”>

<option value=”" selected>请选择省份</option><option value=”安徽省” selected>安徽省</option>< /select>

<SELECT name=”citys”><option value=”0″>请选择城市</option></SELECT>
               <SCRIPT language=”JavaScript”>setcitys();</SCRIPT>

 < /form>

改进后的代码:

<SCRIPT language=”javascript”>

switch (document.getElementById(“sprovince”).value) {

case ” :
var labels = new Array(‘请选择城市’);
var values = new Array(”);
break;

case ‘安徽省’ :
var labels = new Array(‘合肥市’,'淮北市’,'淮南市’,'黄山市’,'安庆市’,'蚌埠市’,'巢湖地区’,'池州地区’,'滁州市’,'六安地区’,'马鞍山市’,'宣城地区’,'宿县地区’,'铜陵市’,'芜湖市’,'阜阳市’);
var values = new Array(‘合肥市’,'淮北市’,'淮南市’,'黄山市’,'安庆市’,'蚌埠市’,'巢湖地区’,'池州地区’,'滁州市’,'六安地区’,'马鞍山市’,'宣城地区’,'宿县地区’,'铜陵市’,'芜湖市’,'阜阳市’);
break;

document.getElementById(“scitys”).options.length = 0;
var j=0;
// 从数组中添加内容
for(var i = 0; i <labels.length; i++) {

document.getElementById(“scitys”).appendChild(document.createElement(“OPTION”));

document.getElementById(“scitys”).options[i].text=labels[i];
document.getElementById(“scitys”).options[i].value=values[i];
if (labels[i]==str)

 j=i;
}


 document.getElementById(“scitys”).selectedIndex = j; } 
              < /SCRIPT>

<form name=”coform” action=”" method=”post”>

<select NAME=”province” id=sprovince OnChange=”setcitys()”>

<option value=”" selected>请选择省份</option><option value=”安徽省” selected>安徽省</option>< /select>

<SELECT id=scitys name=”citys”><option value=”0″>请选择城市</option></SELECT>
               <SCRIPT language=”JavaScript”>setcitys();</SCRIPT>

 < /form>

两者的差异:

1、采用document.getElementById(“”)标记html标签

2、appendChild替换了add方法

简单的几个改造,就能使该两级联动菜单同时支持ie及firefox了。

PS:时间有限,未对该代码进行精简

Tags :

如何判断访问者安装了alexa?

Filed under: 开发编程 | 1 Comment »
Posted on

21cn免费邮箱的pop3出现了短暂的不能使用了,于是乎,web登陆上去收邮件。无意发现21cn在做一个邮箱积分换礼品的活动,其中采用alexa登陆21cn的积分几乎是不采用alexa登陆的2倍以上。因此,对于21cn邮箱如何判断访问者是否使用alexa产生了浓厚的兴趣。

由于安装alexa的时候会安装一些文件到访问者的机器上,这些文件中是包含一些js文件的,只要调用客户端的这些js文件即可。如果能调用,则说明安装了;如果不能调用,则说明没有安装。从网上找了一下,通用的方法如下:

<script language=”” xsrc=”res://AlxRes.dll/s cript/dsn.class.js”></script>

<script language=”javascript”>
function doTryAlexa()
{
try
{
aborted();
return 1;
}
catch(e)
{
return 0;
}
}
</script>
<input type=”button” value=”tryAlexa” onclick=”alert(doTryAlexa())”>

返回1则说明安装了,返回0则没有安装

xhtml网页设计实现换肤功能

Filed under: 开发编程 | No Comments »
Posted on

原理:利用javascript对link标签的href属性的值进行修改。

javascript代码如下:

function SetStyle(stylename){
for (var i=0; i<document.getElementsByTagName(“link”).length; i++){

var e = document.getElementsByTagName(“link”)[i];
 if (e.getAttribute(“media”).indexOf(“screen”) != -1){
  e.setAttribute(“href”,stylename);}
 }
}

 在网页上调用的时候,只需要在skin的连接上调用该方法即可。当然,前提是得准备好几个不同风格的css。stylename就是你的css名称。比如如下用法:

<a href=”" mce_href=”" onclick=”SetStyle(’1.’)”>风格1</a>

<a href=”" mce_href=”" onclick=”SetStyle(’2.css’)”>风格2</a>

升级:如果需要用户选择风格以后,每次访问的都是该风格,那么只需要在SetStyle的代码中增加一些javascript对cookie的读写就可以了。

Tags :

在XHTML 1.0 Strict下调用js新开窗口的方法

Filed under: 开发编程 | No Comments »
Posted on

+css设计的网页,如果在超连接中使用了target=_blank是不能通过w3c校验的。因此,采用调用js的方法新开窗口是比较合理的。

js代码:

function externalLinks(){
if (!document.getElementsByTagName) return;
var anchors = document.getElementsByTagName(“a”);
for (var i=0; i var anchor = anchors[i];
if (anchor.getAttribute(“href”) &&
anchor.getAttribute(“rel”) == “external”)
anchor.target = “_blank”;
}
}
window.onload = externalLinks;
网页中超连接调用的方式:<a href=”" mce_href=”" rel=”external” >连接</a>

网页风格切换

Filed under: 开发编程 | No Comments »
Posted on

准备两个CSS分别控制不同的风格。
[code]
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title></title>
<LINK title="C1" rel="stylesheet" href="C1.css" mce_href="C1.css" type="text/css" />
<link title="C2" rel="alternate stylesheet" href="C2.css" mce_href="C2.css" type="text/css" />
</head>

<body>
<span  class="foo">文字</span>
<script type="text/" language="">
<!--
function SetActiveStyleSheet(title)
{
    for (var i=0; i<document.getElementsByTagName("link").length; i++)
    {
        //循环所有名称为link的标签
        var e = document.getElementsByTagName("link")[i];
        if (e.getAttribute("rel").indexOf("style") != -1)
        {
            //这个link标签的rel属性含style,证明其作用是链接CSS文件的
            if (e.getAttribute("title") == title)
            {
                //当前link对应的CSS就是要使用的CSS,将disabled属性设置为false表示启用
                e.disabled = false;
            }
            else
            {
                e.disabled = true;
            }
        }
    }
}
-->
</script>
<input type="button" value="C1" onclick="SetActiveStyleSheet(this.value);">
<input type="button" value="C2" onclick="SetActiveStyleSheet(this.value);">
</body>

</html>

Tags : ,

web页面预加载xml文件

Filed under: 开发编程 | No Comments »
Posted on

最近负责的一个项目应用到了ajax技术,遇到一个问题,当xml文件过大的时候,程序的反应速度会比较慢,只有等到下载完成才能有响应.于是我设想能否在用户刚访问页面的时候就预先加载好xml文件.
研究了一下,代码如下:
[code]
<SCRIPT language=>
<!--
 var pubXmlDoc,pubXmlPath; 
 window.attachEvent("onload", CacheXml);
 
 //预先加载xml数据
 function CacheXml() {   
     self.defaultStatus = "Downloading  Data...";
  pubXmlPath="your.xml";         //设置xml文件路径
  pubXmlDoc = new ActiveXObject("Microsoft.XMLDOM");
  pubXmlDoc.async=true;  //设置异步传输  
  pubXmlDoc.load(pubXmlPath);
  pubXmlDoc.onreadystatechange=function(){   
   if(pubXmlDoc.readyState==4){
    if( pubXmlDoc == null || pubXmlDoc.documentElement == null) {
     return ;
    }    
    self.defaultStatus = 'ok';
   }   
  }
  window.setTimeout(function(){pubXmlDoc.load(pubXmlPath);},10);  
 }
</SCRIPT>

Tags : ,