문제

프로토 타입 삽입 기능을 사용하여 포함하는 일부 HTML <script>...</script>. 그리고이 스크립트 내에서 나는 새로운 기능을 정의하고 있습니다. 그리고 내가 읽은대로 여기 프로토 타입은 내부에있는 스크립트를 실행합니다 <script> 태그가 나서 제거되지만 모든 기능은 액세스 할 수 있어야합니다. 그러나 그 순간부터 나는 새로운 기능을 실행할 수 없습니다.

 $('some_id').insert({ bottom: '<script> ... </script>' });

그것을 해결하는 방법? 최선의 방법은 제거하지 않는 것입니다 <script> 태그.

편집하다:

지금까지 나는 이것을처럼했다 :

var add_here = document.getElementById('prepayment_group_items');
var src = document.createElement('div');
src.innerHTML = 'a lot of html with script tags';
add_here.appendChild(src);
도움이 되었습니까?

해결책

이 기능은 페이지 헤드에 스크립트 태그를 추가하며 전달한 콘텐츠와 함께 모든 콘텐츠를 추가합니다.

function insertScript(script_text) {
    var script_tag = document.createElement('script');
    script_tag.type = "text/javascript";

    var script = document.createTextNode(script_text);
    script_tag.appendChild(script);

    document.getElementsByTagName('head')[0].appendChild(script_tag);
}

나는 프로토 타입보다 jQuery에 더 익숙하기 때문에 순수한 JS에서 이것을했습니다.

원소를 만드는 부분과 원하는 경우 헤드 요소를 프로토 타입으로 가져 오는 부분을 번역하지만 호출을 사용하십시오. 부록 프로토 타입 대신 끼워 넣다 JS를 평가하는 대신 요구하는 일을 수행하므로 기능.

물론, 이제 당신이 요구하는 것을 살펴 보았으므로, 당신은 당신이 삽입하는 코드를 다음과 같은 것들로 변경해 볼 수도 있습니다.

window.update_12345 = function() {...}

그것이 그것이 맞지 않는지 확실하지 않지만 시도해 볼 가치가 있습니다.

다른 팁

자바 스크립트를 머리에 포함시키려면 다음과 같은 일을 할 수 있습니다.

$$('head').first().insert({
    bottom: new Element('script', {
        type: 'text/javascript'
    }).update('function helloWorldToConsole(){console.log("Hello World!")}')
});

이렇게하면 새 스크립트 태그가 생성되어 머리 바닥에 삽입됩니다. 그러나 다음과 같은 외부 JavaScript 파일을 추가하면 훨씬 더 좋을 것입니다.

$$('head').first().insert({
    bottom: new Element('script', {
        type: 'text/javascript',
        src: 'http://www.example.com/path/file.js'
    })
});

스크립트에서 나중에 함수를 사용하는 것보다 가능합니다.

이 시도..

    $('<script></script>',{
     type:'custom',
     id:'script1'
    }).appendTo('head').attr('type','text/javascript');

    $('#script1').append(< add js code here >);

});

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top