2011-10-10 2 views
18

이것은 퀴즈 질문처럼 들리지만 실제로 알아야합니다.브라우저에서 직접 JavaScript 파일 실행

브라우저의 위치 표시 줄에 HTML 파일의 URL을 넣으면 해당 HTML이 렌더링됩니다. 그것이 브라우저의 모든 목적입니다.

JPG 또는 SWF 또는 PDF로 지정하면 해당 데이터 유형에 적합한 작업을 수행합니다.

그러나 JavaScript 파일의 URL을 제공하면 이 표시되며 해당 파일의 텍스트는입니다. 내가 원하는 것은 그 파일을 직접 실행하는 것이다.

이제 javascript: 프로토콜을 사용하면 텍스트이 실행됩니다.하지만 필요한 것은 아닙니다.

JavaScript 파일을 가리키는 <script> 태그로 구성된 HTML 파일을 가리키는 URL을 가질 수는 있지만, 내 자신의 오컬트 이유 때문에 그렇게 할 수 없습니다.

http://example.com/file.js에서 파일이 완전히

alert("it ran"); 

의 구성 그리고 나는 위치 표시 줄에 URL, 내가 경고로 팝업 "이 실행"원하는 넣어합니다.

나는 이것이 가능하다는 것에 회의적이지만 헤더 또는 MIME 유형 또는 내가 설정하고 기적적으로이를 가능하게 만들 수 있기를 기대하고 있습니다.

+3

문제가 : 어떤 맥락에서이 스크립트가 실행됩니다? 브라우저가 빈 HTML 페이지를 작성해야합니까? – levu

+0

levu가 설명한대로 가능하지 않음을 확실히 확인하십시오 –

+0

@Smamatti -'x-'? 2006 년 실험을 중단했습니다 (http://www.rfc-editor.org/rfc/rfc4329.txt). 그것은 비록 작동하지 않습니다. – Quentin

답변

11

이것은 불가능합니다. 브라우저는 JavaScript가 실행되어야하는 컨텍스트를 전혀 모릅니다. 예를 들어 window의 속성은 무엇입니까? 임의의 기본값을 생각해 낼 수 있다고 가정하면 document의 동작은 어떻게됩니까? 누군가 document.body.innerHTML = "foo" 일을 어떻게해야합니까?

JavaScript는 이미지 또는 HTML 페이지와 달리, 실행되는 컨텍스트에 종속됩니다. 이 컨텍스트는 HTML 페이지이거나 노드 서버 환경 일 수도 있고 Windows Scripting Host 일 수도 있습니다. 당신은 단지 URL로 이동한다면, 브라우저는에서 스크립트를 실행해야하는지 상황을 모르고있다. 아마도 호스트 페이지로 about:blank을 사용하여 해결 방법으로


을.그런 다음, 문서에 스크립트를 삽입하여 URL 표시 줄에 다음을 붙여, 그것을 적절한 실행 컨텍스트를 제공 할 수 있습니다

javascript:(function() { var el = document.createElement("script"); el.src = "PUT_URL_HERE"; document.body.appendChild(el); })(); 
+1

문맥의 문제는 저에게 결코 일어나지 않았다. 원하는 컨텍스트는 완전히 비어있는 HTML 페이지에 제공되는 것과 동일하지만 분명히 내가 알고있는 것과 브라우저가 알고있는 것 사이에는 큰 격차가 있습니다. – Malvolio

+2

코딩하면 겸허하게 @Malvolio :) –

2

직접적인 것은 아니지만 간단한 서버 측 스크립트를 만들 수 있습니다. PHP에서. 대신

http://example.com/file.js 

의,로 이동 : 물론

http://localhost/execute_script.php?url=http://example.com/file.js 

, 당신은 smallen이 아파치에 RewriteRule를 사용하여, 및/또는 127.0.0.1로 리디렉션하여 호스트 파일에 다른 항목을 추가하여 수.

보안면에서는별로 좋지 않지만, 직접 사용하고 다운로드 한 내용을 알고 있다면 괜찮을 것입니다.

<html> 
<head> 

    <script> 
    <? echo file_get_contents($_GET['url']); ?> 
    </script> 

</head> 

<body> 

</body> 
</html> 
0

당신은/Qt는 웹킷을 사용하여 자신의 브라우저를 작성하고 그 작업을 수행 할 수 있습니다. 사용자가 URL 위치에 js 파일을 입력하면 해당 파일을 읽고 자바 스크립트를 실행할 수 있습니다.

http://code.google.com/apis/v8/get_started.html은 다른 채널입니다. 불만족하는지 확실하지 않습니다.

주소 표시 줄에
+1

아니, 고마워. 스크립트와 서버를 제어하지만 브라우저는 제어 할 수 없습니다. – Malvolio

0

Node.js를 사용하십시오. node.js를 다운로드하여 설치하고 http/s 서버를 만들고 브라우저에 표시 할 내용을 적어 둡니다. 파일을 실행하는 url로 서버의 localhost :: portNumber를 사용하십시오. 노드 JS 문서를 참조하십시오 - https://nodejs.org/dist/latest-v7.x/docs/api/http.html

실행 - 아래 http://localhost:3000

샘플 코드 :

var http = require("http"); 
    var server = http.createServer(function(req,res){ 
    res.writeHead(200,{'Content-Type':'text/html'}); 
     res.end("hello user"); 
    }); server.listen(3000);` 
관련 문제