Pregunta

Soy realmente muy nuevo en JavaScript e intento validar una página a XHTML Transitional. Yo uso onselectstart = "return false"

Así que entiendo que quiero crear una función JavaScript que lo inserte como ID. Incluso encontré esto http://www.webmasterworld.com/javascript/3054096.htm Y descubrió cómo hacerlo.

Él está poniendo la carga en el cuerpo y configurando las ID. ¿Puedo hacer esto con una clase y no establecer números de identificación específicos?

¿Fue útil?

Solución 3

Ninguna de las soluciones anteriores funcionó para mí, aunque estoy seguro de que se debió al error del usuario. Ya tenemos jQuery y resulta que ya están configurados para esto. Usamos este código en la sección principal, ¡y funciona muy bien!

<script language="javascript" type="text/javascript">
$(document).ready(function() {
//alert($(".unselectable").length)
var returnFalse = function () { return false; },
els = $(".yourClassNameHere"),
n = els.length;
while (n--) {
els[n].onselectstart = returnFalse;
}
});
</script>

Otros consejos

Puedes usar el document.getElementsByClassName método, pero aún no es estándar (será parte de Html5), puede estar completamente seguro de que lo hará no trabajo en cualquier ES DECIR versión, Algunos navegadores modernos Proporcione una implementación nativa, pero si no está disponible, se puede hacer una verificación de bucle para la clase específica que busca.

Yo personalmente uso la siguiente función, inspirada en el Dustin Díaz implementación:

function getElementsByClassName(node,classname) {
  if (node.getElementsByClassName) { // use native implementation if available
    return node.getElementsByClassName(classname);
  } else {
    return (function getElementsByClass(searchClass,node) {
        if ( node == null )
          node = document;
        var classElements = [],
            els = node.getElementsByTagName("*"),
            elsLen = els.length,
            pattern = new RegExp("(^|\\s)"+searchClass+"(\\s|$)"), i, j;

        for (i = 0, j = 0; i < elsLen; i++) {
          if ( pattern.test(els[i].className) ) {
              classElements[j] = els[i];
              j++;
          }
        }
        return classElements;
    })(classname, node);
  }
}

Entonces puedes usarlo así:

window.onload = function () {
  var returnFalse = function () { return false; },
      els = getElementsByClassName(document, 'yourClassName'),
      n = els.length;

  while (n--) {
    els[n].onselectstart = returnFalse; 
  }
};

EDITAR - Esta respuesta modificada incorpora mi respuesta anterior con la respuesta proporcionada por CMS.

Este código funciona en IE 6/7/8:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>test page</title>
    <script type="text/javascript" language="javascript">
        window.onload = function() {
            var elements = getElementsByClassName(document, 'noselect');
            for (var i = 0; i < elements.length; i++) {
                elements[i].attachEvent('onselectstart', rfalse);
            }
        }

        function rfalse() { return false; }

        function getElementsByClassName(node, classname) {
            if (node.getElementsByClassName) { // use native implementation if available
                return node.getElementsByClassName(classname);
            } else {
                return (function getElementsByClass(searchClass, node) {
                    if (node == null)
                        node = document;
                    var classElements = [],
                els = node.getElementsByTagName("*"),
                elsLen = els.length,
                pattern = new RegExp("(^|\\s)" + searchClass + "(\\s|$)"), i, j;

                    for (i = 0, j = 0; i < elsLen; i++) {
                        if (pattern.test(els[i].className)) {
                            classElements[j] = els[i];
                            j++;
                        }
                    }
                    return classElements;
                })(classname, node);
            }
        }
    </script>
</head>
<body>
    <h2 class='noselect'>
        this text cannot be selected
    </h2>
    <h2>
        this text can be selected
    </h2>
    <h2 class='noselect'>
        this text cannot be selected
    </h2>
</body>
</html>
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top