如下代码
只有第3个函数可以实现文本不可选,其他2个函数都失效,为什么会这样??
addEventListener方法我应该没用错啊...
我测试过下面这样是可以的啊...
target.addEventListener("selectstart", function() { alert("chrome"); }, false);<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <script language="JavaScript" type="text/javascript">
      function returnFalse() { return false; };      function ds1(target) {
        target.addEventListener("selectstart", function() { return false; }, false);
        target.style.cursor = "default";
      };      function ds2(target) {
        target.addEventListener("selectstart", returnFalse, false);
        target.style.cursor = "default";
      };      function ds3(target) {
        target.onselectstart = function() { return false; };
        target.style.cursor = "default";
      };
    </script>
  </head>
  <body>
    <button onclick="ds1(document.body)">DisableSelection_1</button><br />
    <button onclick="ds2(document.body)">DisableSelection_2</button><br />
    <button onclick="ds3(document.body)">DisableSelection_3</button><br />
    sdfkjskdjflksjdflkjsakdljfslkadjflksjdfk<br />lsjdlfkjskldjfksldjf<br />
    sdfkjskdjflksjdflkjsakdljfslkadjflksjdfk<br />lsjdlfkjskldjfksldjf<br />
    sdfkjskdjflksjdflkjsakdljfslkadjflksjdfk<br />lsjdlfkjskldjfksldjf<br />
    sdfkjskdjflksjdflkjsakdljfslkadjflksjdfk<br />lsjdlfkjskldjfksldjf<br />
    sdfkjskdjflksjdflkjsakdljfslkadjflksjdfk<br />lsjdlfkjskldjfksldjf<br />
    sdfkjskdjflksjdflkjsakdljfslkadjflksjdfk<br />lsjdlfkjskldjfksldjf<br />
    sdfkjskdjflksjdflkjsakdljfslkadjflksjdfk<br />lsjdlfkjskldjfksldjf<br />
    sdfkjskdjflksjdflkjsakdljfslkadjflksjdfk<br />lsjdlfkjskldjfksldjf<br />
    sdfkjskdjflksjdflkjsakdljfslkadjflksjdfk<br />lsjdlfkjskldjfksldjf<br />
    sdfkjskdjflksjdflkjsakdljfslkadjflksjdfk<br />lsjdlfkjskldjfksldjf<br />
    sdfkjskdjflksjdflkjsakdljfslkadjflksjdfk<br />lsjdlfkjskldjfksldjf<br />
    sdfkjskdjflksjdflkjsakdljfslkadjflksjdfk<br />lsjdlfkjskldjfksldjf<br />
    sdfkjskdjflksjdflkjsakdljfslkadjflksjdfk<br />lsjdlfkjskldjfksldjf<br />
    sdfkjskdjflksjdflkjsakdljfslkadjflksjdfk<br />lsjdlfkjskldjfksldjf<br />
    sdfkjskdjflksjdflkjsakdljfslkadjflksjdfk<br />lsjdlfkjskldjfksldjf<br />
    sdfkjskdjflksjdflkjsakdljfslkadjflksjdfk<br />lsjdlfkjskldjfksldjf<br />
    sdfkjskdjflksjdflkjsakdljfslkadjflksjdfk<br />lsjdlfkjskldjfksldjf<br />
    sdfkjskdjflksjdflkjsakdljfslkadjflksjdfk<br />lsjdlfkjskldjfksldjf<br />
    sdfkjskdjflksjdflkjsakdljfslkadjflksjdfk<br />lsjdlfkjskldjfksldjf<br />
    sdfkjskdjflksjdflkjsakdljfslkadjflksjdfk<br />lsjdlfkjskldjfksldjf<br />
    sdfkjskdjflksjdflkjsakdljfslkadjflksjdfk<br />lsjdlfkjskldjfksldjf<br />
    sdfkjskdjflksjdflkjsakdljfslkadjflksjdfk<br />lsjdlfkjskldjfksldjf<br />
    sdfkjskdjflksjdflkjsakdljfslkadjflksjdfk<br />lsjdlfkjskldjfksldjf<br />
    sdfkjskdjflksjdflkjsakdljfslkadjflksjdfk<br />lsjdlfkjskldjfksldjf<br />
    sdfkjskdjflksjdflkjsakdljfslkadjflksjdfk<br />lsjdlfkjskldjfksldjf<br />
  </body>
</html>

解决方案 »

  1.   

    忘了说
    Chrome版本是5.0.375.38
      

  2.   

    可能是 Chrome版本是5.0.375.38没有 addEventListener方法吧
    addEventListener是标准(w3c)的事件如:ff
    ie 是attchEvent,
    else dom.onclick...
      

  3.   

    不可能啊...
    function ds1(target) {
      target.addEventListener("click", function() { alert("hello"); }, false);
    };
    这样是可以的哦...
      

  4.   

    原来是onselectstart事件的时候,还必须停止冒泡才可以...不然还是会选中文字...
    <script language="JavaScript" type="text/javascript">
      function returnFalse() {
        e.stopPropagation();
        e.preventDefault();
        return false;
      };  function ds1(target) {
        target.addEventListener("selectstart", function() {
          e.stopPropagation();
          e.preventDefault();
          return false;
        }, false);
        target.style.cursor = "default";
      };  function ds2(target) {
        target.addEventListener("selectstart", returnFalse, false);
        target.style.cursor = "default";
      };  function ds3(target) {
        // 我的理解是,这个并不算动态绑定的事件,所以没有冒泡问题
        target.onselectstart = function() { return false; };
        target.style.cursor = "default";
      };
    </script>