URL / 주소 표시 줄에서 자바 스크립트 함수 호출


112

URL에서 자바 스크립트 함수를 호출 할 수 있습니까? 기본적으로 소스에 액세스 할 수없는 페이지에서 JS 메서드를 활용하려고합니다.

다음과 같은 것 : http://www.example.com/mypage.aspx?javascript:printHelloWorld()

javascript:alert("Hello World");주소 표시 줄에 넣으면 작동합니다.

나는 이것에 대한 대답이 아니라고 생각하지만, 그것을 할 방법이 있는지 궁금했습니다.


3
URL은 어떤 동작을 표시해야합니까? 해당 사이트의 컨텍스트에서 Javascript를 실행 하시겠습니까?
Pekka

http:URI에의 시작은 브라우저 "나는 당신이 HTTP 요청을 만들고 싶어", 그래서 HTTP를가 수행 요청을 알려줍니다. 주위에 방법이 없다고 생각합니다.
Constantin

7
javascript:alert("Hi");Firefox (28.0) 주소 표시 줄에 붙여넣고 Enter 키를 누르면 아무 일도 일어나지 않습니다. 이것이 비활성화되었을 수 있습니까? ... 예, 바보가 주소 표시 줄에 무엇이든 붙여 넣을 수 있기 때문에 비활성화 된 것 같습니다. 여기에서 정보를 찾았습니다. stackoverflow.com/a/18782801/111036
mivk 2014

1
복사 붙여 넣기는 작동하지 않지만 입력하면 작동하고 비활성화되지 않은 것처럼 보이지만 붙여 넣으면 구문 분석됩니다.
Bhabani Sankar Mishra

1
참고 : 1. 실제 (비어 있지 않은) 페이지에 있고 2. 그 앞에 "javascript :"를 명시 적으로 넣었을 때만 Firefox에서 작동합니다.
Andrew

답변:


59

하이퍼 링크가 아닙니다. 페이지에 특별히 이것에 대한 스크립트가 있고 일부 매개 변수를 확인하지 않는 한 ....하지만 귀하의 질문에 대해서는 브라우저에 내장 된 지원이 없습니다.

그러나 주소 표시 줄에서 JavaScript 기능을 빠르게 실행하기 위해 책갈피를 지정할 수있는 책갈피가 있습니다. 그것이 귀하의 요구를 충족하는지 확실하지 않지만 최대한 가깝습니다.


5
기본적으로 소스에 액세스 할 수없는 페이지에서 JS 메서드를 활용하려고합니다.
DazManCat 2010

27

주소 표시 줄에 쓰기

javascript:alert("hi");

처음에는 javascript :


1
Google Chrome 버전 80.0.3987.132 (공식 빌드) (64 비트) 에서는 작동하지 않습니다 . Chrome javascript:은 주소 표시 줄에서 접두사를 자동으로 제거합니다 .
stomy

2
@stomy javascript:안타깝게도 수동으로 입력해야합니다
wjandrea

24

데이터 URI를 사용할 수 있습니다. 예를 들면 : data:text/html,<script>alert('hi');</script>

자세한 내용은 https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/Data_URIs를 방문하십시오.


1
난 항상이 : 정말 놀랍, 데이터 URL은 이미지입니다 덕분에 생각
파리 드 자카 Alnamrouti

2
이것을 URL에 추가 할 수 없습니다.
vivek_23

일부 브라우저는 메시지와 함께이 차단 될 수 있습니다 :Navigation to toplevel data: URI not allowed (Blocked loading of: “data:text/html,<script>alert('hi');</script>”)
알렉산드르 Ryabov

그것은 작동 구글 크롬 버전 80.0.3987.132 (공식 빌드) (64 비트).
stomy

Chrome 80.0.3987.162 (Official Build) (64-bit)Firefox 72.0.2 (64 bit)
안팎

6

/test.html#alert('heello ')

test.html
<button onClick="eval(document.location.hash.substring(1))">do it</button>

13
이 평가 사용자 입력은 매우 위험한 관행이며 일반적으로 허용되지 않아야합니다.
domenukk

6
예, 이건 정말 제정신이 아닙니다. 이런 종류의 광기 때문에 해고되는 직장이 있습니다.
Jacob

6
이로 인해 @domenukk가 지적한대로 XSS (교차 사이트 스크립팅) 문제가 반영됩니다.
pavanw3b

6

다음을 배치 할 수도 있습니다.

<a href='javascript:alert("hello world!");'>Click me</a>

'Click me'하이퍼 링크를 클릭하면 javascript가 url-bar에 나타나고 Alert 대화 상자가 표시됩니다.


5
javascript는 어떤 브라우저의 url-bar나타 납니까? 나는 그것을 본 적이 없다. (나는 javascript : 링크가 작동한다는 것을 알고 있습니다. URL 표시 줄에 대해 말하고 있습니다.)
Sean Patrick Floyd

나도 마찬가지입니다. 주소 표시 줄에 JS를 입력 할 수 있다는 것을 알고 있습니다
DazManCat 2010

이것이 제가 찾던 것입니다.이게 뭐죠?
ThorSummoner

4

window.location.hash속성 정보 :

URL의 앵커 부분을 반환합니다.


예 1 :

//Assume that the current URL is 

var URL = "http://www.example.com/test.htm#part2";

var x = window.location.hash;

//The result of x will be:

x = "#part2"

예제 2 :

$(function(){   
    setTimeout(function(){
        var id = document.location.hash;
        $(id).click().blur();
    }, 200);
})

예 3 :

var hash = "#search" || window.location.hash;
window.location.hash = hash; 

switch(hash){   
case "#search":  
    selectPanel("pnlSearch");
    break;    
case "#advsearch":    

case "#admin":  

}

3

Eddy의 대답을 사용하면 같은 문제가 있었기 때문에 매우 잘 작동했습니다. 매개 변수를 사용하여 URL을 호출하면됩니다. "www.mypage.html # myAnchor"

그런 다음 mypage.html에서 :

$(document).ready(function(){
  var hash = window.location.hash;
  if(hash.length > 0){
    // your action with the hash
  }
});

2

다음과 같은 상황을 사용할 수 있습니다. 예를 들어 페이지가 있습니다 : http://www.example.com/page.php 그 page.php에 다음 코드를 삽입합니다.

if (!empty($_GET['doaction']) && $_GET['doaction'] == blabla ){
echo '<script>alert("hello");</script>';
}

그런 다음이 URL을 방문 할 때마다 : http://www.example.com/page.php?doaction=blabla

그러면 경고가 자동으로 호출됩니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.