Extra Form
PHP PHP 7.4
CMS Rhymix 2.0

예를 들어서 아래와 같은 코드가 있을때 

 

<a href="..." onclick="foo()">

 

<script language="javascript">

    function foo() {

        /* do something */

    }

</script>

 

다음 두 단계에 따라 동작하게 됩니다.

1. URL을 보내서 페이지에 접속

2. 링크를 클릭하면 foo 함수 호출됨

 

위의 2단계 동작에 따라 foo가 호출되는 것을 ==> URL 요청하는 1단계에서 foo함수를 호출하도록 하고 싶습니다.

혹시 URL에 파라미터를 넣어서 foo 함수를 호출하는것이 가능할까요? 

 

 

  • profile
    단순히 특정주소 접속시 코드를 실행하시는거면 그냥 코드만 함수 밖으로 빼면 됩니다.
    <script>
    코드;
    </script>
    이렇게요

    그게 아니라 URL GET 파라메터(주소/?aaa=bbb 처럼 지정하는)에 따라 실행하는거라면 https://velog.io/@gillog/javaScript-URL-Parameter-%EA%B0%92-%EB%8B%A4%EB%A3%A8%EA%B8%B0 이런 글 참고하셔서 특정 GET 파라메터가 특정 값일때 foo 함수를 실행하는 코드를 작성하시면 됩니다.

    예를들면
    <script>
    function foo() {
    코드;
    }

    const url = new URL(window.location.href);
    const urlParams = url.searchParams;
    const key = urlParams.get('key');

    if(key == "foo") foo();
    </script>

    주소뒤 ?key=foo 가 붙으면 foo() 함수를 실행합니다.

    p.s.) 상세히 어떤목적인지 설명을 하지 않으셨기에 범용 코드로 답변드릴수밖에 없는점 양해 부탁드립니다.
  • profile profile
    친절한 답변 감사합니다. 제 질문이 부족한 부분이 있었는데 상세히 답변해주셔서 도움이 되었습니다.
    사실 원래 원했던건 코드수정없이 실행하는 방법이 없을까 궁금했는데 그런 방법은 없는가보군요 ^^;;
    파라미터 읽어오는 코드를 넣어야겠습니다.
  • profile profile
    네. 페이지 수정 없이 아무 페이지 내 함수를 주소만 바꿔서 실행이 된다면 그거대로 보안 취약점이 될 여지가 있습니다.

    예를 들어 특정 주소로 들어갔다고 글이 삭제되거나 추천이나 비추천이 눌리거나 댓글이 맘대로 달리면 곤란하겠죠.
  • profile
    <a href="javascript:foo()">
  • profile

    순서를 거꾸로 이해하신 것 같습니다.

    일단 페이지를 벗어나면 그 페이지에서 선언한 onclick 이벤트는 더이상 유효하지 않습니다.

    따라서 foo()가 먼저 실행되고, 그 후에 href에 지정된 URL로 이동하게 됩니다.

    foo()에서 return false로 URL 이동을 방지할 수 있다는 점을 봐도, foo()가 먼저 실행되는 것이 맞지요.

     

    물론, 이동 후의 페이지에도 동일한 스크립트가 있다면

    이동 후에 실행되는 것 같은 착시현상이 일어날 수는 있습니다.