目的:在in.html文件,可以实现点击按钮,加载doc.htm里的内容到div层中
in.html文件<script>
  
   function func(){
   var doc=window.frames["IFrame1"].document;
   var inner = doc.body.innerHTML;    

   //alert("Inner:" + inner);

   var divdoc = document.getElementById("show");
   //setInnerHTML(divdoc,doc.body.innerHTML);    
   divdoc.innerHTML = doc.body.innerHTML; 
   }
   
   
</script><input type="button" name="ok" value="点击" onclick="func();">
<div id="show"></div>
<iframe name="IFrame1" src="doc.htm"/>这个是doc.htm<input name="in"  value="`fdsafd" type="text"></input>结果:
在IE6下,点击按钮in.htm,没有反应
再Firefox3.0.11,点击按钮有反应,正常添加文本框。
已知,ie6的innerHTML显示的话,会将双引号去掉。firefox不会。
只有再input的value的开头含有重音符`,才会出现该问题,(中间或者末尾都不会出现)其他字符没有出现该情况。
请问该如何操作,使IE可以达到跟FIrefox一样的效果?

解决方案 »

  1.   

    补充下,上述的重音符,是键盘上TAB键上方的一个键。
      

  2.   


          
           function func(){
               var doc=window.frames["IFrame1"].document;        
               var inner = doc.body.innerHTML;           
            
               //alert("Inner:" + inner);
                
               var divdoc = document.getElementById("show");
               //setInnerHTML(divdoc,doc.body.innerHTML);  
               divdoc.innerHTML = replace(doc.body.innerHTML); 
           }function replace(str){
    return str.replace(/=([^\s>]+)(\s|>)/gi, "=\"$1\"$2")
    }
      

  3.   

    var doc=window.frames["IFrame1"];
    doc = (doc.contentWindow || doc).document;
      

  4.   


    var doc=window.frames["IFrame1"]; 
    doc = (doc.contentWindow || doc).document;
      

  5.   

    如此只是兼容ie和firefox中取document,但是对于在ie浏览取doc.body.innerHTML仍然存在问题,如果input的value的值前面是`这个符号,无法显示问题。
    楼上请看清问题。
      

  6.   

    首先非常感谢你的帮助!这种方式是在等于号之间加上双引号,这样在当前环境下是可以满足。但在实际应用中,我是整个页面取过来,里面不只是含有INPUT标签。对于像Script里面的代码,由于也加上了双引号,而不能正常使用。你能否再帮我根据特定的<INPUT>标签里value替换,再写个过正则表达式?
      

  7.   


    function replace(str){
    return str.replace(/(<input [^(value)]*value)=([^\s>]+)(\s|>)/gi, "$1=\"$2\"$3")
    }
      

  8.   

    你好,你的正则表达式针对
    <input value=some type=text size=30>是可以替换,起作用,
    但是针对:
    <input size=30 value=some>即调换了位置,类似却不可以。
    能否将正则表达式不根据value的所在位置顺序进行匹配替换?
      

  9.   

    function replace(str){
    return str.replace(/(<input [^>]*value)=([^\s>]+)(\s|>)/gi, "$1=\"$2\"$3")
    }再试试.我正则不是很好.
      

  10.   

    你好,这个可以满足我现在的要求,非常感谢。
    正则表达式的确很强大,当初解决的思路跟你是一样,但由于没有写过JavaScript的正则表达式,无法前进。
    还好遇见你这样的牛人,帮我解决了。以后有正则表达式方面的问题,还望多请教,哈哈,结贴给分!