随笔-244  评论-80  文章-1  trackbacks-3
  2007年5月30日

Q:两种屏蔽鼠标右键的方法

A:1、最常见的一种方法:
//当用户按下鼠标右键是会弹出一个警告窗口
<script language="javascript">
function click() {
if (event.button==2) {
alert('对不起,本页的内容不经允许不得拷备。')
}
}
document.onmousedown=click
</script>

2、简单一点的:
//IE5适用,取消菜单显示
//但在FireFox下面就无效,而且更为糟糕的是:页面中的其他JavaScript也无法使用
<script">
document.oncontextmenu =new function(){return false}
</script>
或者在<body>标签中加入<body oncontextmenu="return false">


而我使用的是这种方法:
function document.oncontextmenu()
{
    return false;
}

在IE下面可以,但是FireFox下面无法使用,而且连其他的JavaScript也无法使用
所以现在修改为:oncontextmenu="return false"

谢谢同事在测试的时候发现了这个问题!

posted @ 2007-05-30 16:34 kenty 阅读(515) 评论(0) 编辑

现在的系统使用这样的方法:(tips.js)
//
// Browser Detection
//
isMac = (navigator.appVersion.indexOf("Mac")!=-1) ? true : false;
NS4 = (document.layers) ? true : false;
IEmac = ((document.all)&&(isMac)) ? true : false;
IE4plus = (document.all) ? true : false;
IE4 = ((document.all)&&(navigator.appVersion.indexOf("MSIE 4.")!=-1)) ? true : false;
IE5 = ((document.all)&&(navigator.appVersion.indexOf("MSIE 5.")!=-1)) ? true : false;
ver4 = (NS4 || IE4plus) ? true : false;

// Generic Layer Object Functions

// Make an object visible
function showObject(obj)
{
        if (NS4) obj.visibility = "show";
        else if (IE4plus) obj.visibility = "visible";
}

// Hides an object
function hideObject(obj)
{
        if (NS4) obj.visibility = "hide";
        else if (IE4plus) obj.visibility = "hidden";
}

// Move a layer
function moveTo(obj,xL,yL)
{
        obj.left = xL;
        obj.top = yL;
}


//
// MouseTip Methods
//

function MouseTip_ShowNew()
{
 this.WriteLayer();
 this.Show();
}

function MouseTip_Hide()
{
 if ( (NS4) || (IE4plus) )
 {
  this.snow = 0;
  hideObject(this.over);
 }
}

function MouseTip_Show()
{
 if ( (NS4) || (IE4plus) )
 {
  if (this.snow == 0)  
  {
   if (this.dir == 3)
   { // Center
    moveTo(this.over,MouseTip.offsetX,MouseTip.offsetY);
   }
   if (this.dir == 2)
   { // Center
    moveTo(this.over,this.x+MouseTip.offsetX-(MouseTip.width/2),this.y+MouseTip.offsetY);
   }
   if (this.dir == 1)
   { // Right
    moveTo(this.over,this.x+MouseTip.offsetX,this.y+MouseTip.offsetY);
   }
   if (this.dir == 0)
   { // Left
    moveTo(this.over,this.x-MouseTip.offsetX-MouseTip.width,this.y+MouseTip.offsetY);
   }
   showObject(this.over);
   this.snow = 1;
  }
 }
}


// Writes to a layer
function MouseTip_WriteLayer()
{
        if (NS4)
        {
                var lyr = eval(MouseTip.divPath).document;
                lyr.write(this.txt);
                lyr.close();
        }
        else if (IE4plus)
   document.all["overDiv"].innerHTML = this.txt;
}

function MouseTip_AddTip(type, tipTitle, tipText)
{
 var tip = new Object();
 tip.type = type;
 tip.title = tipTitle;
 tip.text = tipText;
 MouseTip.tips[MouseTip.tips.length] = tip;
}

function MouseTip_GetTip(type)
{
 var tip = null;
 
 for (i=0; i < MouseTip.tips.length; i++)
 {
  if (MouseTip.tips[i].type==type)
  {
   tip = MouseTip.tips[i];
   break;
  }
 }
 return tip;
}

function MouseTip(type,dir,x,y)
{
 this.x = x;
 this.y = y;
 this.snow = 0;
 this.dir = dir;
 this.over = null;
 
 this.ShowNew = MouseTip_ShowNew;
 this.Hide = MouseTip_Hide;
 this.Show = MouseTip_Show;
 this.WriteLayer = MouseTip_WriteLayer;

 if ( (NS4) || (IE4plus) )
 {
  if (NS4) this.over = eval(MouseTip.divPath);
  if (IE4plus) this.over = document.all["overDiv"].style;
 }

 var tip = MouseTip.GetTip(type);
 
 this.txt = '<TABLE WIDTH=' + MouseTip.width + ' BORDER=0 CELLPADDING=' + MouseTip.borderWidth +
  ' CELLSPACING=0 BGCOLOR="pink"><TD>' +  tip.text + '</TD></TABLE>';
 
}


MouseTip.current = null;
MouseTip.tips = new Array();
MouseTip.bgColor = "#CC0000";
MouseTip.borderColor = "#42316B";
MouseTip.width = 200
MouseTip.borderWidth = 1;
MouseTip.offsetX = 10;
MouseTip.offsetY = 0;
MouseTip.divPath = "document.overDiv";

MouseTip.AddTip = MouseTip_AddTip;
MouseTip.GetTip = MouseTip_GetTip;


function ShowMouseTip(obj,e,type, pos)
{
 if ( (NS4) || (IE4plus) )
 {
  if(! pos) pos = 1;
  var x = 0;
  var y = 0;
  if (NS4) {x=e.pageX; y=e.pageY;}
  if (IE4plus) {x=e.clientX+document.body.scrollLeft; y=e.clientY+document.body.scrollTop;}

  MouseTip.current = new MouseTip(type,pos,x,y);
  MouseTip.current.ShowNew();
 }
}

function HideMouseTip()
{
 if ( (NS4) || (IE4plus) )
 {
  if (MouseTip.current)
   MouseTip.current.Hide();
 }
}
在调用页面:
<script language="javascript" src="js/tips.js" >

MouseTip.AddTip("MenuLogOut", "", "<%=bundle1.getProperty("top_logout")%>");
MouseTip.AddTip("MenuContact", "", "<%=bundle1.getProperty("top_contact")%>");
MouseTip.AddTip("MenuHelp", "", "<%=bundle1.getProperty("top_help")%>");
MouseTip.AddTip("MenuMyProfile", "", "<%=bundle1.getProperty("top_profile")%>");
MouseTip.AddTip("Menuhk", "", "<%=bundle1.getProperty("top_homepage")%>");

  <td width="20%" align="right">
 <a href="userProfile.jsp" target="text" onMouseOver="ShowMouseTip(this, event, 'MenuMyProfile', 3);" onMouseOut="HideMouseTip()">
  <img width="32" height="32" border="0" src="images/myprofile.png" ></a>
 <a href="contact.jsp" target="text" onMouseOver="ShowMouseTip(this, event, 'MenuContact', 3)" onMouseOut="HideMouseTip()">
  <img width="32" height="32" border="0" src="images/contact.png" ></a>
 <a href="help/help.htm"  target="text" onMouseOver="ShowMouseTip(this, event, 'MenuHelp', 3)" onMouseOut="HideMouseTip()" >
  <img width="32" height="32" src="images/help.png" border="0"  ></a>
 <a href="javascript:top.window.close()" target="_top" onMouseOver="ShowMouseTip(this, event, 'MenuLogOut', 3)" onMouseOut="HideMouseTip()">
  <img width="32" height="32" src="images/logout.png" border="0"></a>
 <a href=http://www.yahoo.com.cn target="text" onMouseOver="ShowMouseTip(this, event, 'Menuhk', 3)" onMouseOut="HideMouseTip()">
  <img border="0" src="images/logo.gif"width="22.4" height="27.3" ></a></td>

在IE下面可以实现提示讯息这样的功能,可是在FireFox下面则不行.
所以就要使用另外一种方法:
<a href="userProfile.jsp" target="text" onMouseOver="ShowMouseTip(this, event, 'MenuMyProfile', 3);" onMouseOut="HideMouseTip()">
  <img width="32" height="32" border="0" src="images/myprofile.png" title="<%=bundle1.getProperty("top_profile")%>" alt="<%=bundle1.getProperty("top_profile")%>"></a>
这样就可以在不同浏览器下面都能实现了!
但是切记,一定要加上title和alt,如果仅仅有alt的话,在FireFox下面也是无法提示讯息的.
这个我找了好久,终于把问题解决了!
js文件和jsp文件在下面附件中:可以参考
事例文件

posted @ 2007-05-30 13:50 kenty 阅读(213) 评论(0) 编辑
如何自学JSP。
2007/05/24 16:23
在网上看到很多问题是关于如何学习jsp的,正好网上看到一篇关于学习jsp的文章,就摘了一部分翻译过来,希望能对大家学习jsp有点指导。
    
      一个普通的错误是把JSP当作简化的 Java。它不是,(事实上, JSP 是简化的 servlets 。)程序员通常试着没有学习要求的支持技巧而直接学习 JSP 。JSP 是一个衔接技术,并且成功地连接你需要理解的另外的技术。如果你已经知道 Java , HTML 和 Javascript,这意味着JSP 将确实是简单的。
    
      需要成为一个成功的 JSP 程序员可以参考这个时间表。请注意下列:
    
      *忽略你已经熟悉的步骤。
    
      *训练的时间只是代表学习好足够的基础时间,这样才能转移到下一步。
    
      1、建立并且理解你的Web Server。
    
      因为Apache 是免费的并且在大多数平台上工作,为训练目的推荐 Apache。安装时间:2 天。
    
      2、 保证你理解 HTML / XHTML 。
    
      你将需要了解html基础, 特别是 HTML 布局中的table的使用。XHTML 不久将代替 HTML ,学习 XHTML 的基础是一个好主意。许多程序员通过 HTML IDE 学习 HTML ( 集成开发环境 ) 。因为大多数 HTML IDE产生混乱的HTMl语法,所以花时间学习手工写作html是很有必要的。因为你将会使用 JSP 和 HTML 混合编程,精通HTML语法是重要的。所以,你必须能流利地写 HTML 。
    
      训练时间:2 ~ 4 个星期。
    
      3、开始学习 Java 。
    
      开始学习 Java 1.3 理解 Java 基础是很重要的。不用担心学习Swing或 Java 的图形方面,因为在JSP 中你不会使用这些特征。集中精力在 Java 工作的细节,学习 Java 的逻辑,也在 Java Bean上花时间。学习Applet是好的, 但是就象Swing, JSP 的大多数应用将不使用小程序。
    
      训练时间:3 ~ 6 个星期。
    
      3、学习 JavaScript
    
      学习怎么将 JavaScript在HTML中验证输入的Form元素。也学习 JavaScript怎么能在一 HTML 页以内修改Form的元素。最后要求你能从一HTML 页内的事件中触发 JavaScript Function。
    
      训练时间:一~ 2 个星期。
    
      4、学习并且理解你的Web Server的更好的细节。
    
      熟悉Web Server的特征,这是很重要的。
    
      训练时间:2 天。
    
      5、建立你的 JSP Server
    
      我推荐以Tomcat开始。它可以很好地运行JSP程序。当你不能在生产使用Tomcat时,学习尽可能多的知识以便于更好的运行程序。另外, 许多 JSP 程序员使用Tomcat。因此当你遇到一个问题时,你将容易发现帮助。
    
      安装时间:一~ 2 天。
    
      6、开始学习 JSP 。
    
      基本的 JSP 学习通过的步骤 1到步骤6可以完成, 然后使用 JSP 对象和脚本写 JSP 程序来联系。学习 JSP 的另外一个方面可以学习怎么创建一个分布式的应用程序。
    
      训练时间:4 ~ 6 个星期。
    
      7、学习更多的 JSP server。
    
      没有关于更多的 JSP Server当然也可以运行jsp程序。然而, 许多 JSP server都由自己特殊的特征,可以让你更好的理解你的JSP 工程。
    
      学习更多的Jsp server如何处理jsp程序是有必要的。同样也可以优化你的 JSP 应用程序,并且使之运行得更快而不出任何问题。
    
      训练时间:2 ~ 7 天。
    
      8、 学习 JDBC 。
    
      JSP 大多数应用将使用数据库,JDBC 被用于数据库连接。经常忽略的一个事实就是,每个 JDBC Driver 所支持的东西是相当不同的。了解并熟悉在jsp工程上被使用的 JDBC driver的细节是很重要的。(有时这部分的学习被包含在前面 Java 或JSP的学习中了 。)
    
      训练时间:1~ 2 个星期。
    
      到现在,你已经成为了熟练的 JSP 程序员。仍然有很多需要学习,你可以考虑扩展你的知识比如 DHTML , XML ,java证书, JSP Tag Libraries 或 Servlets , 看你想要造什么类型的网站而决定了。
    
      这些训练是JSP 的核心。你不必都学习上面所有的, 取决于你在工程中分配到什么任务和你已经有什么知识。但是这是我成功地训练程序员的时间表。关键的单元是时间。平均的说, 5 个月时间确实能够训练一个人 ( 从开始到完成 ) 成为一个对jsp熟悉程序员。5 个月时间似乎很长,但要成为一个资深的WEB程序员所学的东西远远不止这一些。
    
      也许你认为这样学习一种语言花费的时间太长了,因为学 ASP 会更快、时间会更短。 但是学习 ASP 不需要学习java的。
posted @ 2007-05-30 11:40 kenty 阅读(188) 评论(0) 编辑