当前位置: 编程技术>.net/c#/asp.net
本页文章导读:
▪js实现网页防止被iframe框架嵌套及几种location.href的区别
首先我们了解一下:window.location.href、location.href、self.location.href、parent.location.href、top.location.href他们的区别与联系,简单的说:几种location.href的区别 js实现网页被iframe框架功能 "window.locatio.........
▪window.showModalDialog两次加载问题清除缓存方法
今天遇到这样一件事情, 代码如下: var frmHeight = 352; var frmWidth = 508; var frmTop = (window.screen.height - frmHeight) / 2; var frmLeft = (window.screen.width - frmWidth / 2); var url = "ChosePerson.aspx"; var parameter = "dialogH.........
▪asp.net直接Response输出WML页面示例代码
代码如下: protected void Page_Load(object sender, EventArgs e) { Response.ContentType = "text/vnd.wap.wml"; StringBuilder builder = new StringBuilder(); builder.AppendLine("<?xml version=\"1.0\" encoding=\"UTF-8\" ?>"); builder.AppendLine(.........
[1]js实现网页防止被iframe框架嵌套及几种location.href的区别
来源: 互联网 发布时间: 2013-11-30
首先我们了解一下:window.location.href、location.href、self.location.href、parent.location.href、top.location.href他们的区别与联系,简单的说:几种location.href的区别 js实现网页被iframe框架功能
"window.location.href"、"location.href"、"self.location.href"是本页面跳转
"parent.location.href"是上一层页面跳转
"top.location.href"是最外层的页面跳转
举个例子说明(如上图):
如果A,B,C,D都是普通页面,D是C的iframe,C是B的iframe,B是A的iframe,
如果D中js这样写:
"window.location.href"、"location.href":D页面跳转
"parent.location.href":C页面跳转
"top.location.href":A页面跳转
如果D页面中有form的话:
<form>: form提交后D页面跳转
<form target="_blank">: form提交后弹出新页面
<form target="_parent">: form提交后C页面跳转
<form target="_top"> : form提交后A页面跳转
关于页面刷新,D 页面中这样写:
"parent.location.reload();": C页面刷新 (当然,也可以使用子窗口的 opener 对象来获得父窗口的对象:window.opener.document.location.reload(); )
"top.location.reload();": A页面刷新
现在回头看看,js实现网页防止被iframe框架功能就很简单了。假设frame.html文件中框架了content.html文件,那么思路是这样的:在content.html中加入js检测自己本身top.location.href地址,是否为top.location.href地址。如果是则没被嵌套,如果否的话即被嵌套了,这是我们可以提示一下。预览效果
网页防止被框架方法代码:
<script language="javascript">
if(top.location!==self.location){
WarningTxt1 = "content页面被iframe了!";
WarningTxt2 = "我们跳出iframe,直接访问content页面吧!";
alert(WarningTxt1);
alert(WarningTxt2);
top.location.href=/blog_article/self.location.href;
}
</script>
"window.location.href"、"location.href"、"self.location.href"是本页面跳转
"parent.location.href"是上一层页面跳转
"top.location.href"是最外层的页面跳转
举个例子说明(如上图):
如果A,B,C,D都是普通页面,D是C的iframe,C是B的iframe,B是A的iframe,
如果D中js这样写:
"window.location.href"、"location.href":D页面跳转
"parent.location.href":C页面跳转
"top.location.href":A页面跳转
如果D页面中有form的话:
<form>: form提交后D页面跳转
<form target="_blank">: form提交后弹出新页面
<form target="_parent">: form提交后C页面跳转
<form target="_top"> : form提交后A页面跳转
关于页面刷新,D 页面中这样写:
"parent.location.reload();": C页面刷新 (当然,也可以使用子窗口的 opener 对象来获得父窗口的对象:window.opener.document.location.reload(); )
"top.location.reload();": A页面刷新
现在回头看看,js实现网页防止被iframe框架功能就很简单了。假设frame.html文件中框架了content.html文件,那么思路是这样的:在content.html中加入js检测自己本身top.location.href地址,是否为top.location.href地址。如果是则没被嵌套,如果否的话即被嵌套了,这是我们可以提示一下。预览效果
网页防止被框架方法代码:
代码如下:
<script language="javascript">
if(top.location!==self.location){
WarningTxt1 = "content页面被iframe了!";
WarningTxt2 = "我们跳出iframe,直接访问content页面吧!";
alert(WarningTxt1);
alert(WarningTxt2);
top.location.href=/blog_article/self.location.href;
}
</script>
[2]window.showModalDialog两次加载问题清除缓存方法
来源: 互联网 发布时间: 2013-11-30
今天遇到这样一件事情,
var frmHeight = 352;
var frmWidth = 508;
var frmTop = (window.screen.height - frmHeight) / 2;
var frmLeft = (window.screen.width - frmWidth / 2);
var url = "ChosePerson.aspx";
var parameter = "dialogHeight:" + frmHeight + "px;dialogWidth:" + frmWidth + "px;dialogTop" + frmTop + "px;dialogLeft" + frmLeft + "px;scroll:0;status:0;reziable:1;";
var rval = window.showModalDialog(url, "", parameter);
window.showModalDialog()//第一次加载是走page_load()方法的,第二次加载时就不走page_load();
具体原因:
是缓存的问题,你第一次打开窗口后,第二次浏览器没有从服务器端取数据,而直接找到了你已经下载的文件,
最终解决办法:
1.设置浏览器属性
将IE的设置改一下再试试,Internet选项->常规->设置->每次访问此页时检查
(优点全站重加载,可解决问题)
2.添加缓存,把以前的缓存给清除
//加入缓存,清除以前数据,防止不进行加载页面
<%@ OutputCache Duration="1" VaryByParam="none"%>
(优点只针对需要的界面加,节省时间)
//新增
3.(7/10测试时发现IE7不支持第2种缓存格式)没办法只有修改清除缓存代码
在<head></head>中加入
<META HTTP-EQUIV="Pragma" CONTENT="no-cache">
<META HTTP-EQUIV="Cache-Control" CONTENT="no-cache">
<META HTTP-EQUIV="Expires" CONTENT="0">
代码如下:
var frmHeight = 352;
var frmWidth = 508;
var frmTop = (window.screen.height - frmHeight) / 2;
var frmLeft = (window.screen.width - frmWidth / 2);
var url = "ChosePerson.aspx";
var parameter = "dialogHeight:" + frmHeight + "px;dialogWidth:" + frmWidth + "px;dialogTop" + frmTop + "px;dialogLeft" + frmLeft + "px;scroll:0;status:0;reziable:1;";
var rval = window.showModalDialog(url, "", parameter);
window.showModalDialog()//第一次加载是走page_load()方法的,第二次加载时就不走page_load();
具体原因:
是缓存的问题,你第一次打开窗口后,第二次浏览器没有从服务器端取数据,而直接找到了你已经下载的文件,
最终解决办法:
1.设置浏览器属性
将IE的设置改一下再试试,Internet选项->常规->设置->每次访问此页时检查
(优点全站重加载,可解决问题)
2.添加缓存,把以前的缓存给清除
//加入缓存,清除以前数据,防止不进行加载页面
<%@ OutputCache Duration="1" VaryByParam="none"%>
(优点只针对需要的界面加,节省时间)
//新增
3.(7/10测试时发现IE7不支持第2种缓存格式)没办法只有修改清除缓存代码
在<head></head>中加入
<META HTTP-EQUIV="Pragma" CONTENT="no-cache">
<META HTTP-EQUIV="Cache-Control" CONTENT="no-cache">
<META HTTP-EQUIV="Expires" CONTENT="0">
[3]asp.net直接Response输出WML页面示例代码
来源: 互联网 发布时间: 2013-11-30
代码如下:
protected void Page_Load(object sender, EventArgs e)
{
Response.ContentType = "text/vnd.wap.wml";
StringBuilder builder = new StringBuilder();
builder.AppendLine("<?xml version=\"1.0\" encoding=\"UTF-8\" ?>");
builder.AppendLine("<!DOCTYPE wml PUBLIC \"-//WAPFORUM//DTD WML 1.2//EN\" \"http://www.wapforum.org/DTD/wml12.dtd\">");
builder.AppendLine("<wml>");
builder.AppendLine("<head>");
builder.AppendLine("<meta http-equiv=\"Cache-Control\" content=\"max-age=0\" />");
builder.AppendLine("</head>");
builder.AppendLine("<card title=\"公开信息查阅中心\">");
builder.AppendLine("<p><img src=/index.html"images/logo.png\" alt=\"公开信息查阅中心\" /><br/>");
builder.AppendLine("<a href=/index.html"\" title=\"新闻动态\">新闻动态</a>|<a href=/index.html"Department.aspx\" title=\"部门机构\">部门机构</a><br/>");
builder.AppendLine("<a href=/index.html"\" title=\"档案文件\">档案文件</a>|<a href=/index.html"\" title=\"最新文件\">最新文件</a><br/>");
builder.AppendLine("");
builder.AppendLine(" </p></card>");
builder.AppendLine("</wml>");
Response.Write(builder.ToString());
Response.End();
}
最新技术文章: