문제

마스터 페이지에서 jQuery에 대한 스크립트 참조를 추가하여 모든 페이지에서 작동하도록하려고합니다. 현재 이렇게 보입니다

<script type="text/javascript" src="jquery.js"></script>

문제는 경로가 항상 실행되는 ASPX 페이지와 관련이 있으므로 "jQuery.js"파일이 동일한 폴더에있는 경우에만 작동한다는 것입니다. 작동하려면 라인을 변경해야합니다.

<script type="text/javascript" src="../../jquery.js"></script>

루트 폴더에서 두 레벨의 페이지에서만 작동하기 때문에 이것은 이상적이지 않습니다. 다음을 시도하면 IIS는 예기치 않은 캐릭터에 대한 오류를 던집니다.

<script runat="server" type="text/javascript" src="~/jquery.js"></script>

어떤 아이디어?

편집하다: 스크립트가 헤드 태그에 있어야한다는 것을 언급하는 것을 잊었습니다.

현재의 최고 답변은 "ASP.NET AJAX 클라이언트 측 프레임 워크가로드하지 못했습니다."마스터 페이지에 추가 할 때 오류. .NET 컴파일러가 아닌 JavaScript에서 던져졌습니다. ScriptManager를 헤드 섹션으로 옮기면 ScriptManager가 양식 태그 내부에 있어야하는 Compile 오류가 발생합니다. .

세 번째 대답은 "길에서 불법 인물."컴파일러의 예외

편집 2 : 해당 라인을 헤드 태그에 추가하면 IIS 에서이 오류가 발생합니다.

컨트롤에는 컨트롤에 코드 블록이 포함되어 있으므로 컨트롤 컬렉션을 수정할 수 없습니다 (예 : < % ... %>)

해결 : 아래 답변에서 편집 된 응답을 가져 와서 안에 넣었습니다. ASP : Contentplaceholder 요소

도움이 되었습니까?

해결책

당신은 a를 사용할 수 있습니다 ScriptManager:

<asp:ScriptManager ID="ScriptManager1" runat="server">
    <Scripts>
        <asp:ScriptReference Path="~/jquery.js" />
    </Scripts>
</asp:ScriptManager>

편집하다: 만약 너라면 물론 이것을 당신에게 필요로합니다 <head> 섹션, 당신은 다음과 같은 것을 할 수 있습니다.

<head>
    <script type="text/javascript" 
        src="<%= Page.ResolveClientUrl("~/jquery.js") %>"></script>
</head>

편집 2 : 의견에 따르면, 당신이 그것을 관찰하고 있다면

컨트롤에는 컨트롤에 코드 블록이 포함되어 있으므로 컨트롤 컬렉션을 수정할 수 없습니다 (예 : < % ... %>)

데이터 바인딩 구문을 사용하려면 위의 내용을 변경해야 할 수도 있습니다.

<head>
    <script type="text/javascript" 
        src="<%# Page.ResolveClientUrl("~/jquery.js") %>"></script>
</head>

다른 팁

노력하다 <%# 대신에 <%= 헤드 섹션 아래 마스터 페이지에서

<script type="text/javascript" 
        src="<%# ResolveUrl("~/YourScriptFolder/YourJQueryOrJavascript.js") %>">
</script>

그런 다음 아래의 마스터 페이지 뒤에 코드에 있습니다 Page_Load 이벤트

Page.Header.DataBind();

이제 당신은 jQuery와 JavaScript와 함께 가고 CSS와 함께 가면 경로를 변경해야합니다. ResolveUrl CSS, JavaScript, JQuery를 처리하려는 파일.

ASP : ScriptManager 또는 Absolute Paths에 가지 않으면 다음과 같이 할 수 있습니다.

<script runat="server" type="text/javascript" 
  src='<%= Page.ResolveUrl("~/jquery.js") %>'></script>

나는 당신이 당신의 문제에 대한 해결책을 찾았는지 여부를 모릅니다. 내가 사용하는 플러그인에서 왜 "jQuery가 정의되지 않은"오류를 얻는 이유를 알아 내기 위해 같은 문제에 직면하고있었습니다. 인터넷에서 얻는 모든 솔루션을 시도했지만 운이 전혀 사용하지 않았습니다.

그러나 갑자기 스크립트 파일 일 수있는 내 마음에 무언가가 튀어 나와야합니다. 그래서 jQuery Referece를 첫 위치로 옮겼으며 모든 것이 매력처럼 작동하기 시작했습니다.

jQuery가있는 플러그인을 사용하는 경우, 해당 필드에 대한 참조를 설정하는 Folloing 순서를 사용해야합니다.

  1. jQuery 라이브러리에 대한 참조
  2. 다른 후속 플러그인 라이브러리 등을 참조하십시오 ...

예 :

  1. "스크립트 src ="js/jquery-1.3.2.min.js "type ="text/javaScript "...
  2. "스크립트 src ="js/jqdnr.min.js "type ="text/javaScript "...
  3. "스크립트 src ="js/jquery.jqpopup.min.js "type ="text/javaScript "...
  4. "스크립트 src ="js/jquery.bgiframe.min.js "type ="text/javaScript "...

항상 jQuery 참조를 먼저 다음 후속 라이브러리에 넣어야합니다.

희망, 이것은 특히 마스터 페지와 함께 사용할 때 문제를 해결합니다. Mas

행운과 행복한 코딩,

Vincent D 'Souza

보다 루트 "/"를 실행하는 방법. 이것은 해결되지 않은 모든 문제를 해결해야합니다 .js 파일 경로. 귀하는 기본적으로 VS Dev 서버를 재구성하여 응용 프로그램을 실행합니다. localhost:port/ 정규와 달리 localhost:port/application name/ 이름 해상도가 IIS와 같은 방식으로 작동합니다.

<script type="text/javascript" src="/full/path/to/jquery.js"></script>

이 스크립트 태그가 브라우저로 직접 이동하면 사이트의 루트를 대체 할 수 없을 것입니다. 적어도 서버에 있지 않습니다. 그래서 당신은 할 수 있습니다 :

  1. 사이트를 도메인 이름의 루트에 배치하고 절대 경로 (가장 간단한 솔루션)를 사용하십시오.
  2. 이 링크를 서버 컨트롤에 삽입하십시오.
  3. HTML을 클라이언트로 보내기 전에 HTML을 선불로 처리합니다 (httpresponse.filter 포함).

당신은 또한 사용할 수 있습니다u003Cbase> HTML 태그 :

<base href="http://www.domain.com"></base>  

그런 다음 헤더 섹션의 모든 링크는 기본 주소와 관련이 있습니다.

<script type="text/javascript" src="scripts/jquery.js"></script>

로컬 데브 웹 서버, 데모 서버 등과 같은 여러 출판 목적지가있을 때 종종 유용합니다. 해당 기본 URL을 교체합니다.

<body>
<script language="javascript" src='<%= this.ResolveClientUrl("~/full/path/to/jquery.js") %>' type="text/javascript"></script>
</body>

모든 페이지에 대한 파일의 절대 경로의 경우 다음을 사용하십시오.

<script type="text/javascript" src="<%= Page.ResolveClientUrl("~/jquery.js") %>"></script> 
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top