请问如何用js选中页面所有内容,相当在页面里于按下鼠标ctrl+a那样的效果(即选中document.body.textContent的所有内容)...用js能实现么?
要求代码兼容opera...其他浏览器无视...谢了!!

解决方案 »

  1.   

    见红色部分修改:<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
    <title>显示字符</title>
    </head>
    <style type="text/css">
    .span01{font-weight:bold; font-family:verdana; font-size:150px; color:#FF6600; display:block; text-align:center; padding:5px;}
    </style><body id="body">
    <p>&nbsp;</p>
    <p>
    <span class="span01" id="con">show position</span>
    </p>
    <p>&nbsp;</p><script language="javascript" type="text/javascript">
    var i=0;
    function showWord()
    {
    var w="CSDN";  //存放需要显示的字符串
    var o=document.getElementById("con");   //显示的容器位置
    var tmp="";
    o.innerHTML="";
    tmp=w.substr(i,1);
    if (i==w.length)
      o.innerHTML=w;
    else
    {o.innerHTML=tmp;
    i++;
    setTimeout("showWord()",1000);
    }
    }
    showWord();var a;
    a=document.getElementById("body").innerHTML;
    alert(a);

    </script>
    </body>
    </html>
      

  2.   

    嗯. textRange在非IE下的实现是很麻烦. 一下要是实在不行就遍历结点,然后取需要的textNode
      

  3.   

    目的是为opera添加右键菜单"全选并复制"...对应的命令类似于"select all & copy"...
    但是opera9.x以后不支持在页面弹出菜单[对应浏览器菜单配置ini的Document Popup Menu段]中用select all这样的命令...
    按了键盘的ctrl+a之后却可以调用opera的"copy"命令来复制选中内容....
    所以我需要的就是用js实现 "全选" 效果...然后就可以调用 "copy" 来复制了...
    拒绝vbs或其他按键模拟类外部工具的辅助,,我需要能跨平台的代码,,只有js解释器是内置的并且跨浏览器跨平台,,,所以必须用标准javascript来实现...我看了phpbb里一段选中代码用的js脚本...改装了一下...但是只能在phpbb里选中<code>标签的内容...改成"body"之后就没反应了:
    function selectCode(a){
    var e = a.parentNode.parentNode.getElementsByTagName('code')[0];
    var s = window.getSelection();
    var r = document.createRange();
    r.selectNodeContents(e);
    s.removeAllRanges();
    s.addRange(r);
    }
    selectCode(document.getElementsByTagName('*')[1]);void(0);
      

  4.   

    实在不行只好以document.body.textContent做innerHTML临时创建textarea并focus(),,然后调用"copy",,再移除textarea,,,,
    但是我觉得这么做太恶心了...而且涉及到一些html标签和js保留字的替换问题...正则也很麻烦...实在不想出此下策...
    总之能直接用标准javascript实现ctrl+a是最理想的效果...
      

  5.   

    遍历节点是取出innerHTML是不能达到全选复制的效果的。
    只能通过textRange来操作。
      

  6.   

    $d.body.createTextRange();只能用这个
      

  7.   

    <body>
    afefeLZ<br/><a href="fdjlfj">fafljal</a><br/>1245<br/>
    <img src="logo.gif"><br/>
    fefefe</body>
    <script type="text/javascript">
    function selectCode(a){ 
    var e = a//a.parentNode.parentNode.getElementsByTagName('code')[0]; 
    if(document.all){
      var r=document.selection.createRange();
      r.moveEnd("character",e.innerText.length);r.select()
    }
    else{
    var s = window.getSelection(); 
    var r = document.createRange(); 
    r.selectNodeContents(e); 
    s.removeAllRanges(); 
    s.addRange(r); 
    }

    window.onload=function(){selectCode(document.body);}
    </script>
      

  8.   

    楼上大哥的代码只在firefox里有效...opera不行阿...
    javascript:function selectCode(a){var e = a;var s = window.getSelection();var r = document.createRange();r.selectNodeContents(e);s.removeAllRanges();s.addRange(r); }selectCode(document.body);
    你贴在opera的地址栏试试...他啥都不选...也不报错...很诡异...只有直接写在页面源码里的才行...我要做外部脚本加载的...不是直接写在页面里那种...
    麻烦再帮我看下呗~~谢谢拉~~
      

  9.   

    你是在地址栏帖了js再按"转到"后能实现全选么??
    还是直接写htm页面里才管用的??
    我也是opera9.52阿...等我进虚拟机试试9.64的行不行....
      

  10.   

    javascript:function selectCode(a){var e= a; if(document.all){var r=document.selection.createRange();r.moveEnd   ("character",e.innerText.length);r.select();}else{var s = window.getSelection(); var r = document.createRange();r.selectNodeContents(e); s.removeAllRanges(); s.addRange(r);}};selectCode(document.body);
      

  11.   

    我又换了win32版的opera9.64...还是不行...
    算了...散分走人...不麻烦你了~~
      

  12.   

    我想来想去...要么是我的rpwt...要么就是opera太无耻了....