最近做项目,jsp的,我做前台的输出,因为不常用jsp做界面美化,更不常用iframe控制页面。这回可算遇到不少问题了,首先,在iframe内部使用link获取css和jsp整个文档中获取获取js脚本都有问题,其次就是,遇到了ff的onclick未定义情况。这里不再赘述,相信大家都遇到过了吧,可恶的网络,卡的要命。刚刚写了近一千字的内容,居然没有保存,发布后只有两个字,杯具啊!平时几分钟保存一次草稿,这次居然没有自动保存,果断不写了。直接给出我网上搜集的解决方法。

首先就是link问题,这里我还没有找到问题根源,直接jsp include动态写页内了。

然后就是ff的onclick事件。找了以下解决方案。
firefox没有这个事件,需要自己处理一下,代码如下:

function doClick(obj) {
if (document.all) {//如果支持的话,是ie下,默认有这个事件,
obj.click();
} else { //否则就自己添加一个
var evt = document.createEvent(“MouseEvents”);
evt.initEvent(“click”, true, true);
obj.dispatchEvent(evt);
}

}

调用 方法 : doClick(控件);

void initEvent(String eventTypeArg,boolean canBubbleArg,boolean cancelableArg)
initEvent 方法用于初始化通过 DocumentEvent 接口创建的 Event 的值。此方法只能在通过 dispatchEvent 方法指派 Event 之前调用,尽管在该阶段可以多次调用它(如有必要)。如果被多次调用,则最后一次调用优先。如果从 Event 接口的子类调用,则只修改在 initEvent 方法中指定的值,所有其他属性保持不变。
参数:
eventTypeArg – 指定事件类型。此类型可以是当前在此规范中定义的任何事件类型,或是一个新的事件类型。该字符串必须是 XML 名称。任何新的事件类型一定不能以字符串 “DOM” 的大写、小写或混合大小写版本开头。此前缀是为以后的 DOM 事件集保留的。还强烈推荐添加自己的事件的第三方使用自己的前缀以避免混淆,降低与其他新的事件发生冲突的可能性。
canBubbleArg – 指定该事件是否可以 bubble。
cancelableArg – 指定是否可以阻止事件的默认操作。

其次就是iframe刷新问题,ie6下不会自动刷新。网上好的方法,会一两种即可。
简单框架
<iframe id=”ifrmid” src=”http://” width=”100%” height=”500″&dt;
js刷新iframe
<script type=”text/javascript” language=”javascript”>// <![CDATA[
// < ![CDATA[ one=function() { ifrmid.window.location.reload() } setTimeout(“one()”,60000)
// ]]></script>
‘5秒钟自动刷新

1、&lt;script type=”text/javascript”&gt;// &lt; ![CDATA[ window.location.reload(true); // ]]&gt;
如果是你要刷新某一个iframe就把window给换成frame的名字或ID号
2、&lt;script type=”text/javascript”&gt;// &lt; ![CDATA[ window.navigate(“本页面url”); // ]]&gt;
3、function abc()
{
window.location.href=”/blog/window.location.href”;
setTimeout(“abc()”,10000);
}
刷新本页:
Response.Write(“<script type=”text/javascript”>// <![CDATA[
// < ![CDATA[ window.location.href=window.location.href;
// ]]></script>”)
刷新父页:
Response.Write(“<script type=”text/javascript”>// <![CDATA[
// < ![CDATA[ opener.location.href=opener.location.href;
// ]]></script>”)
转到指定页:
Response.Write(“<script type=”text/javascript”>// <![CDATA[
// < ![CDATA[ window.location.href=’yourpage.aspx’;
// ]]></script>”)
刷新页面实现方式总结(HTML,ASP,JS)
‘by aloxy
定时刷新:
1,<script type=”text/javascript”>// <![CDATA[
// < ![CDATA[ setTimeout(“location.href=’url'”,2000)
// ]]></script>
说明:url是要刷新的页面URL地址
2000是等待时间=2秒,
2,
说明:
n is the number of seconds to wait before loading the specified URL.
url is an absolute URL to be loaded.
n,是等待的时间,以秒为单位
url是要刷新的页面URL地址
3,<!–sponse.redirect ur–>
说明:一般用一个url参数或者表单传值判断是否发生某个操作,然后利用response.redirect 刷新。
4,刷新框架页
〈script language=javascript&gt;top.leftFrm.location.reload();parent.frmTop.location.reload(); 弹出窗体后再刷新的问题
Response.Write(“<script type=”text/javascript”>// <![CDATA[
// < ![CDATA[ window.showModalDialog(‘../OA/SPCL.aspx’,window,’dialogHeight: 300px; dialogWidth: 427px; dialogTop: 200px; dialogLeft: 133px’)
// ]]></script>”);//open
Response.Write(“<script type=”text/javascript”>// <![CDATA[
// < ![CDATA[ document.location=document.location;
// ]]></script>”);
在子窗体页面代码head中加入
刷新的内容加在 if (!IsPostBack) 中
在框架页中右面刷新左面
//刷新框架页左半部分
Response.Write(“<script type=”text/javascript”>// <![CDATA[
// < ![CDATA[ “); Response.Write(“parent.left.location.href=’PayDetailManage_Left.aspx'”); Response.Write(”
// ]]></script>”);
页面定时刷新功能实现
有三种方法:
1,在html中设置:
之後加入下面这一行即可!
定时刷新:
10代表刷新间隔,单位为秒
2.jsp
<!–esponse.setHeader(“refresh”,”1″);–>
每一秒刷新一次
3.使用javascript:
<script type=”text/javascript”>// <![CDATA[
// < ![CDATA[ setTimeout(“self.location.reload();”,1000);
// ]]></script><script type=”text/javascript”>// <![CDATA[
// < ![CDATA[ 一秒一次 页面自动跳转:
// ]]></script><script type=”text/javascript”>// <![CDATA[
// < ![CDATA[ window.location.href=”mian.aspx”; history.go(0);//window.close(); //关闭浏览器此页的窗口
// ]]></script>
先来看一个简单的例子:
下面以三个页面分别命名为frame.html、top.html、bottom.html为例来具体说明如何做。
frame.html 由上(top.html)下(bottom.html)两个页面组成,代码如下:
&lt; !DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.0 Transitional//EN”&gt;

frame

现在假设top.html (即上面的页面) 有七个button来实现对bottom.html (即下面的页面) 的刷新,可以用以下七种语句,哪个好用自己看着办了。
语句1. window.parent.frames[1].location.reload();
语句2. window.parent.frames.bottom.location.reload();
语句3. window.parent.frames[“bottom”].location.reload();
语句4. window.parent.frames.item(1).location.reload();
语句5. window.parent.frames.item(‘bottom’).location.reload();
语句6. window.parent.bottom.location.reload();
语句7. window.parent[‘bottom’].location.reload();
top.html 页面的代码如下:
&lt; !DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.0 Transitional//EN”&gt;

top.html

<input onclick=”window.parent.frames[1].location.reload()” type=”button” value=”刷新1″ />

<input onclick=”window.parent.frames.bottom.location.reload()” type=”button” value=”刷新2″ />

<input onclick=”window.parent.frames[‘bottom’].location.reload()” type=”button” value=”刷新3″ />

<input onclick=”window.parent.frames.item(1).location.reload()” type=”button” value=”刷新4″ />

<input onclick=”window.parent.frames.item(‘bottom’).location.reload()” type=”button” value=”刷新5″ />

<input onclick=”window.parent.bottom.location.reload()” type=”button” value=”刷新6″ />

<input onclick=”window.parent[‘bottom’].location.reload()” type=”button” value=”刷新7″ />

下面是bottom.html页面源代码,为了证明下方页面的确被刷新了,在装载完页面弹出一个对话框。
bottom.html 页面的代码如下:
&lt; !DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.0 Transitional//EN”&gt;

bottom.html
<h1>This is the content in bottom.html.</h1>
解释一下:
1.window指代的是当前页面,例如对于此例它指的是top.html页面。
2.parent指的是当前页面的父页面,也就是包含它的框架页面。例如对于此例它指的是framedemo.html。
3.frames是window对象,是一个数组。代表着该框架内所有子页面。
4.item是方法。返回数组里面的元素。
5.如果子页面也是个框架页面,里面还是其它的子页面,那么上面的有些方法可能不行。
附:
Javascript刷新页面的几种方法:
1 history.go(0)
2 location.reload()
3 location=location
4 location.assign(location)
5 document.execCommand(‘Refresh’)
6 window.navigate(location)
7 location.replace(location)
8 document.URL=location.href
自动刷新页面的方法:
1.页面自动刷新:把如下代码加入区域中

其中20指每隔20秒刷新一次页面.
2.页面自动跳转:把如下代码加入区域中

其中20指隔20秒后跳转到http://www.wyxg.com页面
3.页面自动刷新js版
<script type=”text/javascript” language=”JavaScript”>// <![CDATA[
// < ![CDATA[ function myrefresh() { window.location.reload(); } setTimeout(‘myrefresh()’,1000); //指定1秒刷新一次
// ]]></script>
ASP.NET如何输出刷新父窗口脚本语句
1. this.response.write(“<script type=”text/javascript”>// <![CDATA[
// < ![CDATA[ opener.location.reload();
// ]]></script>”);
2. this.response.write(“<script type=”text/javascript”>// <![CDATA[
// < ![CDATA[ opener.window.location.href = opener.window.location.href;
// ]]></script>”); 3. Response.Write(“<script type=”text/javascript” language=”javascript”>// <![CDATA[
// < ![CDATA[ opener.window.navigate(”你要刷新的页.asp”);
// ]]></script>”)
JS刷新框架的脚本语句
//如何刷新包含该框架的页面用
<script type=”text/javascript” language=”JavaScript”>// <![CDATA[
// < ![CDATA[ parent.location.reload();
// ]]></script>
//子窗口刷新父窗口
<script type=”text/javascript” language=”JavaScript”>// <![CDATA[
// < ![CDATA[ self.opener.location.reload();
// ]]></script>
( 或 <a href=”javascript:opener.location.reload()”>刷新</a> )
//如何刷新另一个框架的页面用
<script type=”text/javascript” language=”JavaScript”>// <![CDATA[
// < ![CDATA[ parent.另一FrameID.location.reload();
// ]]></script>
如果想关闭窗口时刷新或者想开窗时刷新的话,在中调用以下语句即可。
开窗时刷新
关闭时刷新
<script type=”text/javascript” language=”javascript”>// <![CDATA[
// < ![CDATA[ window.opener.document.location.reload()
// ]]></script>
杂记一篇,到此为止。