문제

저는 JavaScript를 처음 접했고 페이지를 XHTML Transitional로 검증하려고합니다. onselectstart = "return false"를 사용합니다.

그래서 나는 그것을 ID로 삽입 할 JavaScript 함수를 만들고 싶다는 것을 이해합니다. 나는 이것을 찾았다 http://www.webmasterworld.com/javaScript/3054096.htm 그리고 그는 그것을하는 방법을 알아 냈습니다.

그는 신체에 onload를 넣고 ID를 설정하고 있습니다. 클래스로 이것을 할 수 있고 특정 ID 번호를 설정하지 않습니까?

도움이 되었습니까?

해결책 3

위의 솔루션 중 어느 것도 저에게 효과가 없었습니다.하지만 사용자 오류로 인한 것이라고 확신합니다. 우리는 jQuery가 이미 실행 중이며 이미이를 위해 설정되어 있음이 밝혀졌습니다. 우리는이 코드를 헤드 섹션에 사용했으며 훌륭하게 작동합니다!

<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>

다른 팁

당신은 사용할 수 있습니다 document.getElementsByClassName 방법이지만 아직 표준이 아닙니다 (일부는의 일부가 될 것입니다. html5), 당신은 그것이 작동하지 어떤 것도 버전, 일부 현대식 브라우저 기본 구현을 제공하지만 사용할 수없는 경우 찾은 특정 클래스에 대한 루프 확인을 수행 할 수 있습니다.

나는 개인적으로 다음과 같은 기능을 사용합니다. 더스틴 디아즈 구현:

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);
  }
}

그런 다음 다음과 같이 사용할 수 있습니다.

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

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

편집하다 -이 수정 된 답변에는 CMS가 제공 한 답변과 이전 답변이 포함되어 있습니다.

이 코드는 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>
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top