iframe IE FireFox

我的标题就是为了方便别人能够通过搜索来得到这篇文章。

环境:VS2005 C# windowsXP IE8 FireFox3.6.3

经过熬夜苦战,终于解决了自己论坛代码兼容IE和FireFox的问题。现将一些经验分享如下:

1.fireFox支不支持body onload事件?

网上好多人说在fireFox中body onload事件没反应,建议用window.onload代替。我的实战结果是:
fireFox支持body onload事件,以前说不支持的朋友可能是版本问题或代码有误。另外,window.onload也可以触发,但它不 能完全代替body onload!这是因为window.onload发生在窗体刚刚加载时,而body onload发生在页面加载后。我在window.onload事件函数中试图设置iframe对像属性,结果抛出对象为空异常。而把这些代码放body onload事件函数中则没问题。

2.firefox中iframe能不能置于可编辑状态

IE中是很容易的,FireFox中也可以,不过要类似用下面方式:
HTML code
 
   
< html > < head > </ head > < script language ="javascript" > <!-- function start() { document.getElementById( " myiframe " ).contentWindow.document.designMode = " on " ; } --> </ script > < body onLoad ="start()" > < iframe id ="myiframe" style ="width:750px; height:400px; border:1;" ></ iframe > </ body > </ html >



3 JS中如何引用iframe document对象:
  
  经过实战,得出如下经验:
  IE直接使用Iframe标签中的ID:iframeID.document.xxx
  FireFox中使用: document.getElementById("iframeID").contentWindow.document.xxx

  我还发现:IE中使用document.getElementById方法反而不行(仅对于iframe),这可能是我代码问题?


4 JS中如何让iframe自适应高度?
HTML code
 
   
< script type ="text/javascript" language ="javascript" > // 这里也是为了满足IE和fireFox需求 function stateChangeIE(_frame) { if (_frame.readyState == " complete " ) // state: loading ,interactive, complete { AutoHeight(); } } function stateChangeFirefox(_frame) { AutoHeight(); } function AutoHeight() { if (document.readyState != ' complete ' ) { setTimeout( function (){AutoHeight();}, 50 ); return ; } else { try { // IE、fireFox下测试通过 var ifobj = document.getElementById( " oldhtml " ); ifobj.style.height = ifobj.contentWindow.document.body.scrollHeight + 20 + " px " ; } // 注意,别忘了加最后那个"px",不然fireFox下就不起作用了 // 加的那20是为了让高度稍富余些 catch (e) {} } } </ script > < iframe id ="oldhtml" onreadystatechange ="stateChangeIE(this)" onload ="stateChangeFirefox(this)" scrolling ="yes" style ="width: 120%; height: 9px" width ="99%" ></ iframe >


5 如何判断是否是IE浏览器?
 世界各国高手们正不断使这个问题变得更简单,目前最新成果是仅用7个字节便完成判定,我找的这个方法虽然要多用几个字节,但经实战证明它是可行的:

if("\v"=="v") // 这个判断真的只有在IE下才为真,包括IE 8。
{IE}
else
{非IE}
 

6 JS中如何向iframe中写入html文本:
  var html = 
  "<HTML><HEAD></HEAD>"+
  "<BODY><span style=\"font-family:宋体; font-size:13px;\"><br><br><br><br><br><br><br><br></span></BODY></HTML>";

  IE:iframeID.document.write(html);
  FireFox: 
  document.getElementById("iframeID").contentWindow.document.write(html);

7 后台Page_Load和js里的body onload谁先执行?前者先执行(貌似弱智话题,可我开始就是不知道)

转载于:https://www.cnblogs.com/spark_wu/archive/2010/04/10/1709038.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值