JavaScript:代码选择-哪里出错了?

JavaScript: Code-Selection - What's wrong?

本文关键字:出错 错了 代码 选择 JavaScript      更新时间:2023-09-26
<!DOCTYPE html>
<html>
<head>
  <title>Select Code</title>
  <meta charset="UTF-8">
  <script type="text/javascript">
    window.onload = function() {
      function selectCode(a) {
        // Get ID of Code Block
        var e = a.parentNode.parentNode.getElementsByTagName('code')[0];
        // Not IE or IE9+
        if (window.getSelection) {
          var s = window.getSelection();
          if (s.setBaseAndExtent) {
            s.setBaseAndExtent(e, 0, e, e.innerText.length - 1);
          }
          // Firefox and Opera
          else {
            if (window.opera && e.innerHTML.substring(e.innerHTML.length - 4) == '<br>') {
              e.innerHTML = e.innerHTML + '&nbsp;';
            }
            var r = document.createRange();
            r.selectNodeContents(e);
            s.removeAllRanges();
            s.addRange(r);
          }
        }
        // Some older browsers
        else if (document.getSelection) {
          var s = document.getSelection();
          var r = document.createRange();
          r.selectNodeContents(e);
          s.removeAllRanges();
          s.addRange(r);
        }
        // IE
        else if (document.selection) {
          var r = document.body.createTextRange();
          r.moveToElementText(e);
          r.select();
        }
      };
    }
  </script>
</head>
<body>
  <a onclick="selectCode(this); return false;" href="#">Select all</a>
  <code>Some Code</code>
</body>
</html>

有谁知道是怎么回事吗?这根本行不通。: - (

我刚刚删除了window.onload

查看这里的工作代码http://jsfiddle.net/5n4cw/

<a onclick="selectCode(this);" href="#">Select all</a>
<code>Some Code</code>

<script type='text/javascript'>
 function selectCode(a) {
        // Get ID of Code Block
        var e = a.parentNode.parentNode.getElementsByTagName('code')[0];
        // Not IE or IE9+
        if (window.getSelection) {
          var s = window.getSelection();
          if (s.setBaseAndExtent) {
            s.setBaseAndExtent(e, 0, e, e.innerText.length - 1);
          }
          // Firefox and Opera
          else {
            if (window.opera && e.innerHTML.substring(e.innerHTML.length - 4) == '<br>') {
              e.innerHTML = e.innerHTML + '&nbsp;';
            }
            var r = document.createRange();
            r.selectNodeContents(e);
            s.removeAllRanges();
            s.addRange(r);
          }
        }
        // Some older browsers
        else if (document.getSelection) {
          var s = document.getSelection();
          var r = document.createRange();
          r.selectNodeContents(e);
          s.removeAllRanges();
          s.addRange(r);
        }
        // IE
        else if (document.selection) {
          var r = document.body.createTextRange();
          r.moveToElementText(e);
          r.select();
        }
      }
</script>