"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > 클라이언트 측 JavaScript 실행을 중지하거나 수정하는 방법은 무엇입니까?

클라이언트 측 JavaScript 실행을 중지하거나 수정하는 방법은 무엇입니까?

2024년 11월 22일에 게시됨
검색:879

How to Stop or Modify Client-Side JavaScript Execution?

클라이언트 측 JavaScript 실행을 중지하거나 수정하는 방법

소개

특정 시나리오에서 , 클라이언트 측 환경에서 특정 JavaScript 기능의 실행을 중지하거나 변경해야 할 수도 있습니다. 원하지 않는 기능을 제거하거나 동적 요소의 동작을 조정하는 등 다양한 이유가 있을 수 있습니다.

JavaScript 실행 중지

Firefox와 같은 최신 브라우저의 경우 beforescriptexecute 이벤트 JavaScript 실행이 발생하기 전에 가로채서 방지하는 데 사용할 수 있습니다. 이를 통해 콘텐츠 또는 소스 URL을 기반으로 특정

이 방법을 구현하려면 다음과 같은 JavaScript 함수를 사용할 수 있습니다.

function checkForBadJavascripts(controlArray) {
  for (var J = controlArray.length - 1; J >= 0; --J) {
    var bSearchSrcAttr = controlArray[J][0];
    var identifyingRegex = controlArray[J][1];

    if (bSearchSrcAttr) {
      if (identifyingRegex.test(zEvent.target.src)) {
        stopBadJavascript(J);
        return false;
      }
    } else {
      if (identifyingRegex.test(zEvent.target.textContent)) {
        stopBadJavascript(J);
        return false;
      }
    }
  }
}

controlArray 매개변수를 사용하면 일치하는 스크립트에 대한 패턴과 해당 작업을 정의할 수 있습니다. 예를 들어 소스 URL이 특정 패턴과 일치하는 경우 스크립트 실행을 중지하는 규칙이 있을 수 있습니다.

checkForBadJavascripts([
  [true, /evilExternalJS/i, null]
]);

JavaScript 함수 동작 수정

특정 JavaScript 함수의 동작을 수정해야 하는 경우 동적 JavaScript 기술을 사용하여 함수의 동작을 삽입하거나 재정의할 수 있습니다. code.

이를 수행하는 한 가지 방법은 다음의 overrideFunction 함수를 사용하는 것입니다. [그리스몽키](https://github.com/greasemonkey/greasemonkey):

GM_overrideFunction(window.init, function() {
  // Override the existing init function and modify its behavior as needed
});

또는 addJS_Node 함수를 사용하여 사용자 정의 코드를 실행하는 새 JavaScript 노드를 삽입할 수 있습니다.

addJS_Node('alert("Hooray, you are a millionaire!")');

브라우저 호환성

참고 beforescriptexecute 이벤트는 Firefox에서 지원되지만 현재 Chrome과 같은 다른 브라우저에서는 지원되지 않습니다. Firefox 이외의 브라우저의 경우 원하는 기능을 얻으려면 전체 브라우저 확장을 사용해야 할 수도 있습니다.

최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3