[javascript] 페이지로드 후 jQuery를 통해 <script> 태그를 동적으로 삽입하는 방법은 무엇입니까?
이 작업을 수행하는 데 문제가 있습니다. 먼저 스크립트 태그를 문자열로 설정 한 다음 jquery replaceWith ()를 사용하여 페이지로드 후 문서에 추가했습니다.
var a = '<script type="text/javascript">some script here</script>';
$('#someelement').replaceWith(a);
하지만 그 var에 문자열 리터럴 오류가 있습니다. 그런 다음 다음과 같은 문자열 인코딩을 시도했습니다.
var a = '&left;script type="text/javascript">some script here<\/script>';
그러나 그것을 보내면 해당 replaceWith()
문자열 만 브라우저 에 출력됩니다.
<script>
페이지로드 후, 이상적으로는 jQuery를 통해 브라우저에 태그를 동적으로 추가하는 방법을 알려주세요 .
답변
스크립트를 별도의 파일에 넣은 다음을 사용 $.getScript
하여로드하고 실행할 수 있습니다.
예:
$.getScript("test.js", function(){
alert("Running test.js");
});
답변
다음을 시도하십시오.
<script type="text/javascript">
// Use any event to append the code
$(document).ready(function()
{
var s = document.createElement("script");
s.type = "text/javascript";
s.src = "http://scriptlocation/das.js";
// Use any selector
$("head").append(s);
});
답변
최신 (2014) JQuery를 사용하여 수행하는 올바른 방법은 다음과 같습니다.
$(function () {
$('<script>')
.attr('type', 'text/javascript')
.text('some script here')
.appendTo('head');
})
또는 정말로 div를 바꾸고 싶다면 다음과 같이 할 수 있습니다.
$(function () {
$('<script>')
.attr('type', 'text/javascript')
.text('some script here')
.replaceAll('#someelement');
});
답변
더 간단한 방법은 다음과 같습니다.
$('head').append('<script type="text/javascript" src="your.js"></script>');
이 양식을 사용하여 CSS를로드 할 수도 있습니다.
답변
이 답변은 jcoffland가 답변 한 것과 기술적으로 유사하거나 동일합니다. 스크립트가 이미 있는지 여부를 감지하는 쿼리를 추가했습니다. 몇 개의 모듈이있는 인트라넷 웹 사이트에서 작업하기 때문에 이것이 필요합니다.이 중 일부는 스크립트를 공유하거나 자체적으로 가져 오지만 이러한 스크립트는 매번 다시로드 할 필요가 없습니다. 프로덕션 환경에서 1 년 이상이 스 니펫을 사용하고 있습니다. 나 자신에게 댓글 달기 : 예, 알겠습니다. 함수가 있는지 묻는 것이 더 정확할 것입니다 … 🙂
if (!$('head > script[src="js/jquery.searchable.min.js"]').length) {
$('head').append($('<script />').attr('src','js/jquery.searchable.min.js'));
}
답변
해킹처럼 들리는 한 가지 해결 방법이 있으며 가장 우아한 방법은 아니지만 100 % 작동합니다.
AJAX 응답이 다음과 같다고 가정하십시오.
<b>some html</b>
<script>alert("and some javscript")
일부러 닫는 태그를 건너 뛰었습니다. 그런 다음 위를로드하는 스크립트에서 다음을 수행합니다.
$.ajax({
url: "path/to/return/the-above-js+html.php",
success: function(newhtml){
newhtml += "<";
newhtml += "/script>";
$("head").append(newhtml);
}
});
왜 그런지 묻지 마세요 🙂 이것은 필사적으로 거의 무작위적인 시련과 실패의 결과로 얻은 것들 중 하나입니다.
작동 방식에 대한 완전한 제안은 없지만 흥미롭게도 닫는 태그를 한 줄에 추가하면 작동하지 않습니다.
이런 때에 나는 성공적으로 0으로 나눈 것 같다.
답변
예:
var a = '<script type="text/javascript">some script here</script>';
$('#someelement').replaceWith(a);
작동합니다. 나는 그것을 시도했다; 같은 결과. 하지만 이것을 사용했을 때 :
var length = 1;
var html = "";
for (var i = 0; i < length; i++) {
html += '<div id="codeSnippet"></div>';
html += '<script type="text/javascript">';
html += 'your script here';
html += '</script>';
}
$('#someElement').replaceWith(a);
이것은 나를 위해 일했습니다.
편집 : 나는 잊어 버렸습니다 #someelement
( #someElement
규칙 때문에 사용하고 싶을 수도 있습니다 )
여기서 가장 중요한 것은 + =이므로 html이 추가되고 대체되지 않습니다.
작동하지 않으면 댓글을 남겨주세요. 나는 당신을 돕고 싶습니다!