jQuery를 사용하면 다른 라이브러리 리소스에 대한 링크를 중단합니까?

StackOverflow https://stackoverflow.com/questions/303026

  •  08-07-2019
  •  | 
  •  

문제

나는 div가있는 간단한 HTML 페이지가 있습니다. jQuery를 사용하여 ASPX 앱의 내용을 "Content"Div에로드하고 있습니다. 코드는 다음과 같습니다.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
                "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
    <script type="text/javascript" src="http://code.jquery.com/jquery-latest.js">
    </script>
    <script type="text/javascript">
        jQuery.noConflict();
    </script>
</head>
<body>
    <div id="content">
        <div id="loading"> 
            <div class="loading-indicator">Loading...</div>
        </div>
    </div>
</body>
<script type="text/javascript">
    jQuery(document).ready(function() {
        jQuery("#content").load("default.aspx");
    });
</script>
</html>

문제는 Default.aspx가 Shadowbox 및 기타 JavaScript 라이브러리를 사용합니다. 해당 코드가 Default.aspx에서 실행하려고하면 JS 소스 파일이로드되지 않은 것처럼 작동합니다. FireBug를 확인하고 JS 파일이 있습니다 (404 개 이상). 내가 무엇을 놓치고 있는지 아는 사람 있나요? 보시다시피 $ 사용이 다른 라이브러리와 충돌 할 수 있지만 도움이되지 않았기 때문에 jQuery noconflict 기능을 사용했습니다.

도움이 되었습니까?

해결책

스크립트 블록으로 실행되지 않는 코드는로드 된 라이브러리를 이해하지만 스크립트 블록이나 인라인 JavaScript는 동적으로로드 할 때 실행되지 않습니다. 유효한 스크립트 블록을 평가할 솔루션을 찾아야합니다. 프로토 타입에서 예제를 파낼 수 있는지 살펴 보겠습니다.

업데이트:

이것은 프로토 타입에서 바로 있습니다 ...

  ScriptFragment: '<script[^>]*>([\\S\\s]*?)<\/script>'

  extractScripts: function() {
    var matchAll = new RegExp(Prototype.ScriptFragment, 'img');
    var matchOne = new RegExp(Prototype.ScriptFragment, 'im');
    return (this.match(matchAll) || []).map(function(scriptTag) {
      return (scriptTag.match(matchOne) || ['', ''])[1];
    });
  }

  evalScripts: function() {
    return this.extractScripts().map(function(script) { return eval(script) });
  }

물론 필요에 따라 단순화 할 수 있지만 페이지가 동적으로 반환되면 브라우저가 자동으로 요소에 주입 된 스크립트를 평가하지 않으므로 모든 스크립트를 수동으로 평가해야합니다.

다른 팁

이 작업을 수행하는 코드가 있는데 필요한 것보다 더 장점 일 수 있지만 중첩 된 JS 파일은 문제가되지 않아야합니다.

jQuery.get('default.aspx', null, function(data) {
    $('#default').append(data);
}, 'html');

일반적인 문제처럼 보입니다. http://andreineculau.wordpress.com/2006/09/29/ajax-ondemand-javaScript-or-dynamic-script-tags/

Ajax 응답이 임의의 스크립트를 실행하는 것을 방지하기 위해 브라우저에 내장 된 보안이 있다고 생각합니다.

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