2014-06-18 4 views
2

jQuery 자체와 CSS를 포함하기 위해 현재 하드 코딩 된 경로를 사용하는 몇 가지 작은 JQuery 스크립트가 SharePoint에 있으므로 이동하기가 어렵습니다.IE10 (호환 모드에서)이 SCRIPT1015를 생성합니다 : 유효한 코드에서 끝나지 않은 문자열 상수 오류가 있습니까?

JS 및 document.write()를 사용하여 사이트 루트 URL을 포함하여 동적으로 생성 된 경로를 사용하여 파일을 포함시킬 것이라고 생각했습니다.

문제점 : 유효한 JS 코드라고 생각되는 부분이 있지만 IE10에서는 "종료되지 않은 문자열"오류가 발생합니다. 최종 '</script>' 문자열을 다른 것으로 변경하면 정상적으로 작동합니다 (물론 유효한 html이 아닙니다).

코드 자체는 간격에 대한 몇 가지 의견과 함께 JSlint를 전달합니다. Javascriptlint.com은 "경로가 지정되면 스크립트 태그가 비어 있어야합니다"라는 경고를 표시하지만 두 라인의 변수 "imp"를 설정하여 link 태그를 먼저 생성 한 다음 script 태그를 연결하여 수정할 수 있습니다.

코드 :이 너무 오래 쳐다보고 된

<script language="javascript"> 

    var siteURL= L_Menu_BaseUrl; 

    var imp= '<link href="' + siteURL + '/SiteAssets/Path/my.css" rel="stylesheet" type="text/css"/>\n' 
    +  '<script language="javascript" src="' + siteURL + '/lib/js/jquery-1.9.1_min.js">' + '</script>\n'; 

</script> 

, 아마 정말 간단 뭔가. 나는 여기에 HTML 문자열을 만들고 있지만 IE는 최종 </script> 태그를 해석하고있는 것처럼 보입니다. 따옴표로 묶인 리터럴 문자열은 무시합니다.

아이디어가 있으십니까?

+0

변경,' 'N \''+로,'. –

+0

아는 한,'\ n'은 HTML에서 아무 것도하지 않습니다. '
'(또는 XHTML의 경우 '
')으로 바꿔야합니다 ... – War10ck

+0

고마워요.정확히 IE가 구문 상 문자열에있는 경우 스크립트 닫기 태그를 해석해야하는 이유가 명확하지 않습니다. 어쩌면 비교할 수없는 따옴표가있는 스크립트에서 브라우저를보다 강력하게 만들려고 노력했을 수도 있습니다. BTW HTML 용어로 \ n이 (공백을 추가하는 것 외에는) 아무 것도하지 않는다는 것을 알고 있습니다. 나는 HTML (form.write()와 함께 주입 가능한 HTML을 읽기 쉬운 HTML로 유지하려고했습니다) . –

답변

3

는 IE는이 정확히 무슨 일이 일어나고 있는지

따옴표 리터럴 문자열이 있다는 사실을 무시하고, 최종 </script> 태그를 해석하는 것으로 보인다. 한 가지 해결책은 '</scr'+'ipt>'을 사용하는 것입니다. 닫기 태그를 해체하면 닫기 태그로 해석되지 않습니다.

var imp= '<link href="' + siteURL + '/SiteAssets/Path/my.css" rel="stylesheet" type="text/css"/>\n' 
    +  '<script language="javascript" src="' + siteURL + '/lib/js/jquery-1.9.1_min.js">' + '</scr' + 'ipt>\n'; 

편집 : 당신은 또한 단지 도움이 의견이

... + '<\/script>\n'; 
0

감사 할 수 있습니다. 이 문제에 대한 더 많은 책을 읽었을 때 나는 document.write()을 사용하는 것이 일반적으로 나쁜 습관으로 간주되거나 적어도 피할 수있는 것으로 이해하게되었습니다.

JS 코드로 <link> and <script> 태그를 만들 수는 있지만 매우 자세한 정보입니다. 또한 JQuery와 CSS를로드 한 태그를 다양한 코드로 작성하여 브라우저가 페이지를 올바르게 레이아웃 할 수 있기 때문에 내 페이지에 레이아웃 결함이 추가 된 것을 발견했습니다.

HTML 태그를 사용하여 종속 파일의 기본 (프로덕션 사이트) 위치를로드했지만 스크립트에서 dev 사이트의 파일 경로를 조정하면 (약간의 레이아웃 지연이 허용되는 경우)).

결과는 보이는 같은 - '+'N \ '

<link id="MyCSS" rel="stylesheet" type="text/css" href="/sites/live/SiteAssets/Path/my.css"/> 
<script id="JQ" language="javascript" src="/sites/live/lib/js/jquery-1.9.1_min.js"></script> 

<script language="javascript"> 
/* 
* Paths for dev/debug 
*/ 
var siteURL= L_Menu_BaseUrl; 

if(siteURL != "/sites/live") { 
    document.getElementById("MyCSS").href= 
      siteURL + "/SiteAssets/Path/my.css"; 
    document.getElementById("JQ").src= 
      siteURL + "/lib/js/jquery-1.9.1_min.js"; 
} 
</script> 
관련 문제