URL 파라미터를 이용해서 onclick function 호출 방법
CMS/프레임워크 | Rhymix 2.0 |
---|---|
개발 언어 | PHP 7.4 |
예를 들어서 아래와 같은 코드가 있을때
<a href="..." onclick="foo()">
<script language="javascript">
function foo() {
/* do something */
}
</script>
다음 두 단계에 따라 동작하게 됩니다.
1. URL을 보내서 페이지에 접속
2. 링크를 클릭하면 foo 함수 호출됨
위의 2단계 동작에 따라 foo가 호출되는 것을 ==> URL 요청하는 1단계에서 foo함수를 호출하도록 하고 싶습니다.
혹시 URL에 파라미터를 넣어서 foo 함수를 호출하는것이 가능할까요?
댓글 5
<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.) 상세히 어떤목적인지 설명을 하지 않으셨기에 범용 코드로 답변드릴수밖에 없는점 양해 부탁드립니다.
사실 원래 원했던건 코드수정없이 실행하는 방법이 없을까 궁금했는데 그런 방법은 없는가보군요 ^^;;
파라미터 읽어오는 코드를 넣어야겠습니다.
예를 들어 특정 주소로 들어갔다고 글이 삭제되거나 추천이나 비추천이 눌리거나 댓글이 맘대로 달리면 곤란하겠죠.
순서를 거꾸로 이해하신 것 같습니다.
일단 페이지를 벗어나면 그 페이지에서 선언한 onclick 이벤트는 더이상 유효하지 않습니다.
따라서 foo()가 먼저 실행되고, 그 후에 href에 지정된 URL로 이동하게 됩니다.
foo()에서 return false로 URL 이동을 방지할 수 있다는 점을 봐도, foo()가 먼저 실행되는 것이 맞지요.
물론, 이동 후의 페이지에도 동일한 스크립트가 있다면
이동 후에 실행되는 것 같은 착시현상이 일어날 수는 있습니다.