Javaphua Blog

BlogJava 首页 新随笔 联系 聚合 管理
  46 Posts :: 5 Stories :: 46 Comments :: 0 Trackbacks

□html页面技巧大全
□fuhj02 发表于 2005-11-6 20:31:00

 
1. oncontextmenu="window.event.returnValue=false" 将彻底屏蔽鼠标右键
<table border oncontextmenu=return(false)><td>no</table> 可用于Table

2. <body onselectstart="return false"> 取消选取、防止复制

3. onpaste="return false" 不准粘贴

4. oncopy="return false;" oncut="return false;" 防止复制

5. <link rel="Shortcut Icon" href="favicon.ico"> IE地址栏前换成自己的图标

6. <link rel="Bookmark" href="favicon.ico"> 可以在收藏夹中显示出你的图标

7. <input style="ime-mode:disabled"> 关闭输入法

8. 永远都会带着框架
<script language="JavaScript"><!--
if (window == top)top.location.href = "frames.htm"; //frames.htm为框架网页
// --></script>

9. 防止被人frame
<SCRIPT LANGUAGE=J***ASCRIPT><!--
if (top.location != self.location)top.location=self.location;
// --></SCRIPT>

10. <noscript><iframe src="/*.html>";</iframe></noscript> 网页将不能被另存为

11. <input type=button value=查看网页源代码
onclick="window.location = ''view-source:''+ ''http://www.csdn.net/''">

12. 怎样通过asp的手段来检查来访者是否用了代理
<% if Request.ServerVariables("HTTP_X_FORWARDED_FOR")<>"" then
response.write "<font color=#FF0000>您通过了代理服务器,"& _
"真实的IP为"&Request.ServerVariables("HTTP_X_FORWARDED_FOR")
end if
%>

13. 取得控件的绝对位置

//Javascript
<script language="Javascript">
function getIE(e){
var t=e.offsetTop;
var l=e.offsetLeft;
while(e=e.offsetParent){
t+=e.offsetTop;
l+=e.offsetLeft;
}
alert("top="+t+"\nleft="+l);
}
</script>

//VBScript
<script language="VBScript"><!--
function getIE()
dim t,l,a,b
set a=document.all.img1
t=document.all.img1.offsetTop
l=document.all.img1.offsetLeft
while a.tagName<>"BODY"
set a = a.offsetParent
t=t+a.offsetTop
l=l+a.offsetLeft
wend
msgbox "top="&t&chr(13)&"left="&l,64,"得到控件的位置"
end function
--></script>

14. 光标是停在文本框文字的最后
<script language="javascript">
function cc()
{
var e = event.srcElement;
var r =e.createTextRange();
r.moveStart(''character'',e.value.length);
r.collapse(true);
r.select();
}
</script>
<input type=text name=text1 value="123" onfocus="cc()">

15. 判断上一页的来源
asp:
request.servervariables("HTTP_REFERER")

java script:
document.referrer

16. 最小化、最大化、关闭窗口
<object id=hh1 classid="clsid:ADB880A6-D8FF-11CF-9377-00AA003B7A11">
<param name="Command" value="Minimize"></object>
<object id=hh2 classid="clsid:ADB880A6-D8FF-11CF-9377-00AA003B7A11">
<param name="Command" value="Maximize"></object>
<OBJECT id=hh3 classid="clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11">
<PARAM NAME="Command" VALUE="Close"></OBJECT>

<input type=button value=最小化 onclick=hh1.Click()>
<input type=button value=最大化 onclick=hh2.Click()>
<input type=button value=关闭 onclick=hh3.Click()>
本例适用于IE

17.
<%
''定义数据库连接的一些常量
Const adOpenForwardOnly = 0 ''游标只向前浏览记录,不支持分页、Recordset、BookMark
Const adOpenKeyset = 1 ''键集游标,其他用户对记录说做的修改将反映到记录集中,但其他用户增加或删除记录不会反映到记录集中。支持分页、Recordset、BookMark
Const adOpenDynamic = 2 ''动态游标功能最强,但耗资源也最多。用户对记录说做的修改,增加或删除记录都将反映到记录集中。支持全功能浏览(ACCESS不支持)。
Const adOpenStatic = 3 ''静态游标,只是数据的一个快照,用户对记录说做的修改,增加或删除记录都不会反映到记录集中。支持向前或向后移动

Const adLockReadOnly = 1 ''锁定类型,默认的,只读,不能作任何修改
Const adLockPessimistic = 2 ''当编辑时立即锁定记录,最安全的方式
Const adLockOptimistic = 3 ''只有在调用Update方法时才锁定记录集,而在此前的其他操作仍可对当前记录进行更改、插入和删除等
Const adLockBatchOptimistic = 4 ''当编辑时记录不会被锁定,而更改、插入和删除是在批处理方式下完成的

Const adCmdText = &H0001
Const adCmdTable = &H0002
%>

18. 网页不会被缓存
HTM网页
<META HTTP-EQUIV="pragma" CONTENT="no-cache">
<META HTTP-EQUIV="Cache-Control" CONTENT="no-cache, must-revalidate">
<META HTTP-EQUIV="expires" CONTENT="Wed, 26 Feb 1997 08:21:57 GMT">
或者<META HTTP-EQUIV="expires" CONTENT="0">
ASP网页
Response.Expires = -1
Response.ExpiresAbsolute = Now() - 1
Response.cachecontrol = "no-cache"
PHP网页
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Cache-Control: no-cache, must-revalidate");
header("Pragma: no-cache");
19. 检查一段字符串是否全由数字组成
<script language="Javascript"><!--
function checkNum(str){return str.match(/\D/)==null}
alert(checkNum("1232142141"))
alert(checkNum("123214214a1"))
// --></script>

20. 获得一个窗口的大小
document.body.clientWidth,document.body.clientHeight

21. 怎么判断是否是字符
if (/[^\x00-\xff]/g.test(s)) alert("含有汉字");
else alert("全是字符");

22.TEXTAREA自适应文字行数的多少
<textarea rows=1 name=s1 cols=27 onpropertychange="this.style.posHeight=this.scrollHeight">


页面很简单,就是一个文本框keyword和一个图片按钮doit,功能是,点击doit这个图片弹出新窗口显示查找的结果。

我原来做法是在按钮的doit_click过程中使用response.write("<script>window.open('search.aspx?keywork="&keyword.text&"',_blank)</script>")
功能是实现了,可就是会被广告拦截程序拦掉。

后来又使用onclick="window.open('search.aspx')"的方式来打开,用session("keyword")来传递参数。但碰到个问题:我在doit_click里给session("keyword")赋值,可oncick比doit_click先执行,即先打开新页面,再给session赋值,这就使查找的关键字是前一次输入的keyword。又不能解决问题。

A:
在onclick的里面获取文本框的值,然后作为url参数传到search.aspx

var keyword = document.getElementById('Keyword');

window.open('search.aspx?Keyword=' + encodeURI(var.value));

////
Q:
datagrid超链接打开定制新窗口的问题时出现的错误????
DataNavigateUrlFormatString="Javascript:window.open('CourseDetails.aspx?CourseCode={0}','','width=600,height=400,toolbar=0,menubar=0')"

但点击链接后除了弹出想要得窗口外,另弹出一个窗口。该窗口页面只有[object]字样,窗口标题为Javascript:window.open('CourseDetails.aspx?CourseCode={0}','','width=600,height=...

A:
private void projectinfo_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
  {
  
   if(e.Item.ItemType==ListItemType.Item||e.Item.ItemType==ListItemType.AlternatingItem)
   {
   
     //邦定连接字段
     string NavigaterUrl = PargetUrl+"?id="+e.Item.Cells[1].Text;
     //定制客户端属性
     StringBuilder ClientTitle = new StringBuilder();
     ClientTitle.Append("this.bgColor='#ffefe5'");
     e.Item.Attributes.Add("onmouseover",ClientTitle.ToString());
     e.Item.Attributes.Add("onmouseout","this.bgColor='#ffffff'");
     //e.Item.Cells[0].Attributes.Add("onclick","javascript:show()");
     e.Item.Attributes.Add("onclick","javascript:window.open('"+NavigaterUrl+"','MainFrameSetMain'),this.bgColor='#C1D2EE'");
     //不换行显示
    
   
    
   
   }
 
  }

///
谁帮我用javascript写一个打开一个340*340的新窗口的程序。

A:window.open('a.aspx','','toolbar,menubar,scrollbars,resizable,status,location,directories,copyhistory,height=340,width=340')

window.open('a.aspx','','toolbar=no, menubar=no, scrollbars=no, resizable=1, location=no, status=no',height=340,width=340');
所有的弹出广告都是这样做的,看看新浪的主页就知道了。
<script language=javascript>
<!-- Hide
var newWindow = null
function windowOpener(loadpos)
{      
        if (! newWindow || newWindow.closed)
        {
        newWindow = window.open(loadpos,"surveywin","toolbar,resizable,scrollbars,dependent,width=400,height=280");
        }else
        {
                newWindow.focus();
        }
}

//end-->
</SCRIPT>


///
Q:
请教关于window.open的问题。我在验证后用window.open打开了新窗口,怎么把现在的窗口关闭呢?谢谢! Response.Write("<script language='javascript'>window.open('SystemConfig/Index.aspx','','width=1012,height=710,left=0,top=0,resizable=yes');window.close();</" + "script>");

这样用window.close()会弹出提示框,提示是不是关闭,请问怎么才能不提示就关闭呢?或是通过别的方法。谢谢@!

A:
window.opener=null;
window.close();
A2:
Response.Write("<script language='javascript'>window.open('SystemConfig/Index.aspx','','width=1012,height=710,left=0,top=0,resizable=yes');window.opener=null;window.close();</" + "script>");

////
open
打开一个新窗口,并装载URL指定的文档,或装载一个空白文档,如果没提供URL的话。
适用于
窗口
语法
widow = object.open([URL[,name[,features[,replace]]]])
参数         说   明
URL     规定要显示的文档URL的串。如果规定了URL,就显示带有about:blank的新窗口。name选项。规定窗口名字的串。这个名字用于FORM上的或用于A。选项。规定显示窗口装饰物的串。
下面的表列出所支持的特征语法说明
fullscreen={yes | no | 1 | 0 }规定是在全屏幕上还是在正常窗口中显示浏览器。默认值是no。使用全屏幕模式要当心。因为这种模式把浏览器的标题栏和菜单都隐蔽起来,你应当提供一个按钮或其他线索,帮助用户关闭这个窗口。Alt+F4也关闭这个新窗口。
channelmode=         { yes | no | 1 | 0 }规定是否以剧场模式显示窗口,并显示通道带。
toolbar={yes | no | 1 | 0 }规定是否显示浏览器toolbar、makingbutton,例如可用的Back、Forward、Stop
location={yes | no | 1 | 0 }规定是否显示用于把URL直接键入浏览器的输入字段

directories={yes | no | 1 | 0 }规定是否添加目录按钮,默认值是no
status={yes | no | 1 | 0 }规定是否在窗口底部添加状态条。默认是no
menubar={yes | no | 1 | 0 }规定是否显示菜单条。默认是no
scrollbars={yes | no | 1 | 0 }规定是否显示水平和垂直滚动条。默认是no
resizeble={yes | no | 1 | 0 }规定是否在窗口的角落上显示重定尺寸处理程序
width=number设置窗口的宽度,单位是像素
height=number规定窗口的高度,单位是像素。最小值是100
top=number规定顶位置,单位是像素。这个值是相对于屏幕的左上角的
left=number规定左位置,单位是像素。这个值是相对于屏幕左上角的
replace选项。是一个布尔值,规定要装入新页面上的URL是否在窗口浏览历史中要建立一个新条目,或者取代浏览历史中的当前条目。如果是真,就不建立新历史条目。

返回值
返回一个到新窗口的引用。
使用这个引用,在新窗口上脚本属性和方法上。说明新窗口的一个名字可以作为一种形式或一个A元素的目标。按照默认,open( )方法创建一个窗口。这个窗口有默认宽度和高度、标准的菜单、工具条,和其他Internet Explorer特征。你可以使用特征参数改变这组特征。这个参数是由一个或多个特征设定组成的串。替换参数便控制新窗口是否放到浏览器历史列表中。作为例子,下边创建一个包含Sample.htm的新窗口。新窗口为200乘400像素,有一个状态条,但是没有工具条、菜单或地址字段。
window.open("ample.html",null,"height=200,width=400,status=yes,toolbar=no,menubar=no,location=no");


/////Q:
在datagird中,在链接字段上面点击弹出窗口,up者有分
<asp:HyperLinkColumn Text="&gt;&gt;GO" DataNavigateUrlField="OperId" DataNavigateUrlFormatString="javascript:showModalDialog()"></asp:HyperLinkColumn>
这样可以实现弹出窗口,请问用window.open,和showModalDialog怎么实现?然后如何新窗口中弹出对话框?
A:
後台:
for (int j = 0; j < dg.Items.Count; j ++)
    {
     str1="MM_openBrWindow('06digital_view.aspx?e='"+dg.DataKeys[j].ToString()+",'作品瀏灠','width=550,height=400')";
     hlink = (HyperLink)dg.Items[j].Cells[4].FindControl("hlink");
     hlink.Attributes.Add("OnClick",str1);
    }


前台:


 <meta http-equiv="Content-Type" content="text/html; charset=big5">
   <script language="JavaScript">
<!--
function MM_openBrWindow(theURL,winName,features) { //v2.0
  window.open(theURL,winName,features);
}

//-->
   </script>


A2:
如果用DataNavigateUrlFormatString弹出窗口效果不好的话,可以使用以下方法:

<columns>     
 <asp:TemplateColumn runat="server">
 <itemtemplate>        <a href='' onClick='return f_open1("<%# DataBinder.Eval(Container.DataItem,"filename")%>")'><%# DataBinder.Eval(Container.DataItem,"title") %></a>
 </itemtemplate>


<SCRIPT language="JavaScript">
function f_open1(name)
{
window.open('infoshow.aspx?name='+name,'','scrollbars=yes,toolbar=no,location=no,directories=no,status=no,menubar=no,resizable=yes,top=0, left=0,width=480%,height=400%');
return false;
window.opener=null;
window.close();
}
</SCRIPT>


//
我的在aspx里写,不在.cs里

<asp:HyperLinkColumn Text="&gt;&gt;GO" NavigateUrl="javascript:window.open('a.aspx?id=<%# DataBinder.Eval(Container.DataItem,"OperId")%>','','toolbar=no');"></asp:HyperLinkColumn>

<asp:HyperLinkColumn Text="&gt;&gt;GO" DataNavigateUrlField="OperId" DataNavigateUrlFormatString="javascript:window.open('a.aspx?id={0}','','toolbar=no');"></"></asp:HyperLinkColumn>


/////
用datagrid的超级链接打开新页面,在新页面修改数据后怎么刷新父页面?
我使用了Response.Write("<script language='javascript'>window.parent.location.reload();</script>");
却不好用?为什么?

Response.Write("<script language='javascript'>self.close();</script>");
可以执行!
A1:
如果你是用Javascript的window.open()方法打开的,可以试试:

window.opener.location.reload();

如果你是用超链接 <a href="mypage.aspx" target="_blank">在新窗口打开</a> 这样打开的,那么两个窗口之间没有任何关系,所以无法实现刷新打开新页面的窗口的要求。
A2:
使用Response.Write("<script language='javascript'>window.opener.location.href = window.opener.location.href;window.close();</script>");

A2:
这个问题,呵呵~~~~其实是老问题了~~~~~

1 首先如果你父页面中,提交过,有本页提交,即IsPostBack = ture .那么子窗体中用javaScript 的
window.opener.location.reload();方法就会出现IE讨厌的网页刷新重试按钮.

2 .除非你父窗体中没有本页提交,都是通过href = ....._blank 出去的,在子页面中使用
reload()是没有问题.

A3:
这个问题我这几天在研究,关于刷新父页面的法子是可以办到的。我是使用打开模态对话框提交自动关闭然后自动刷新父页面。
因为我不知道你说的“用datagrid的超级链接”这个链接文本是数据绑定的还是固定的链接。这两个链接要用到不同的事件处理模块。
假设你的这个链接是你的DataGrid的第三列,是修改按钮。代码如下:

html代码中加入:
<script language="javascript">
<!--
  function OpenEditWin(strID)
  {
     var url; // 定义你要打开的页面位置,假设是editdata.aspx
     url = 'editdata.aspx?ID=" + strID;
     var me;
     // 把父页面窗口对象当作参数传递到对话框中,以便对话框操纵父页自动刷新。
     me = window;
     // 打开对跨框的第三个参数要设定与editdata.aspx一样的大小。
     window.showModalDialog(url,me,'dialogWidth:580px;dialogHeight:520px;help:no;status:no')
   }
//-->
</script>
上面的js代码是让DataGrid的超链接调用的,参数是查询字符串关键字,让editdata.aspx获得。

然后是后台代码:
假设使用<asp:HyperLink)标签,name 是lnkEdit
首先必须在“Web 窗体设计器生成的代码”的“InitializeComponent()”中加入DataGrid的事件处理程序(DataGrid名称为MyDataGrid):
this.MyDataGrid.ItemDataBound += new DataGridItemEventHandler(this.MyDataGrid_ItemDataBound);
然后vs.net会自动生成一个MyDataGrid_ItemCreated方法,在里面添加:

private void MyDataGrid_ItemDataBound(object sender, DataGridItemEventArgs e)
{
    if(e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
    {
        for(int i=0;i<MyDataGrid.Items.Count;i++) // 循环查找所有DataGrid所有行
        {
         HyperLink lnk;
         lnk = (HyperLink)MyDataGrid.Items[i].Cells[2].FindControl("lnkEdit");
         // 现在,找到了链接,可以加东西了。
         // 首先获得记录主健
         string str = MyDataGrid.DataKeys[i].ToString();
         lnk.NavigateUrl = "#"; //表示内部链接
         // 注意,下面这行代码调用写好的js,并且把参数传递进去。
         lnk.Attributes.Add("onclick","javascript:OpenEditWin('" + str + "')");
         }
    }

上面的方法就是在DataGrid数据绑定后,强行修改链接字段的内容。

下面是dataedit.aspx的内容:
这个页面实际上是一个模态对话框,这种对话框要注意两个难点:
1 提交自动打开新窗口
2 对父窗口的引用无效(即使用window.opener操作无效)

接上:
解决第一个问题花了我好长时间,我在网上查找了好多资料,解决办法无非是下面两种:
1 在<head></head>内加入:<base target="_self">
2 在打开的模态对话框中使用<iframe>框架,在框架内使用.aspx文件,文件的提交target使用<iframe>的名称。即模态对话框不直接打开.aspx文件,而是打开含有框架的文件,在框架里面使用aspx文件。
以上两种办法我都用了,不管用。第一种办法我用了,表单提交的时候仍然打开新窗口。第二种办法也不可取,因为我要向模态对话框打开的文件传递查询字符串,而这个文件无法把这个字符串传递到框架内包含的文件中。
我解决这个问题还是使用js脚本,模态对话框直接打开.aspx文件,正常使用.aspx?ID=XXX这样的方式,在这个.aspx文件中加入js代码:
<script language="javascript">
<!--
   function onsubmit() // 定义表单提交事件发生的时候怎样处理
   {
      document.Form1.target="_self";
   }
//-->
</script>
上面的代码就是当表单提交的时候强制提交目标为本页,即使用对话框处理提交,而不是打开新页面。我注意到了,所有模态对话框自动打开新页面都是标单提交造成的。
然后就可以加入<asp:button>控件,处理数据库操作了,操作完毕以后,与贴主一样,向页面写入js代码,关闭本对话框并刷新父页面
后台代码
private void btnSubmit_Click(object sender,EvengArgs e)
{
   // 前面是数据库操作
   // 成功后,写
   Response.Write("<script language=\"javascript\">\r\n");
   Response.Write("<!--\r\n");
   Response.Write("if(dialogArguments != null){\r\n");
   // 注意上面的dialogArguments,就是父页面showModalDialog()的第二个参数。
   // 就是父页面的window对象引用。
   Response.Write("dialogArguments.location.reload(true);\r\n");
   // 上面就是刷新父页的代码,相当于在父页上使用
   // window.location.reload(true);代码
   // Response.Write("window.close();}"); // 关闭对话框
   // Response.Write("//-->\r\n</script>"); //关闭脚本块
}
上面的代码就是关闭对话框和刷新父页的代码,这段代码也可以直接写入editdata.aspx的html中,然后在后台cs中调用。
对不起,代码有点错。
最后两行代码
// Response.Write("window.close();}"); // 关闭对话框
// Response.Write("//-->\r\n</script>"); //关闭脚本块
不是注释,应该是
 Response.Write("window.close();}"); // 关闭对话框
 Response.Write("//-->\r\n</script>"); //关闭脚本块
 

posted on 2006-05-26 14:02 Javaphua 阅读(747) 评论(0)  编辑  收藏

只有注册用户登录后才能发表评论。


网站导航: