Frage

Ich habe eine einfache HTML-Seite mit einem div. Ich benutze jQuery den Inhalt einer aspx App in den „Inhalt“ div zu laden. Code sieht wie folgt aus:

<!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>

Das Problem ist default.aspx shadowbox und andere Javascript-Bibliotheken verwendet. Wenn dieser Code auf default.aspx auszuführen versucht, wirkt es wie die js-Quelldateien wurden nicht geladen. Ich überprüfe in Firebug und die js Dateien sind (keine 404 oder etwas). Wer weiß, was mir fehlt? Wie Sie sehen können habe ich die Funktion jQuery noConflict, weil ich die Verwendung von $ dachte vielleicht mit den anderen Bibliotheken in Konflikt, aber keine Hilfe da ...

War es hilfreich?

Lösung

Ist der Code, der als Skriptblöcke nicht gerendert aus ausgeführt wird, verstehe ich die geladenen Bibliotheken aber keine Skriptblöcke oder Inline-Javascript ausführen wird nicht, wenn diese dynamisch wie geladen. Sie müssen miteiner Lösung kommen, die die Skriptblocks zurück für irgendetwas davon werden prüfen, um gültig zu sein. Ich werde sehen, ob ich ein Beispiel von Prototyp graben kann, ich erinnere sich eines.

UPDATE:

Dies ist gerade vom Prototyp ...

  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) });
  }

Natürlich können Sie die für Ihre Bedürfnisse vereinfachen, aber wenn eine Seite zurückgeführt wird dynamisch Sie müssen manuell alle Skripte bewerten als die Browser-Skript nicht in das Element automatisch injiziert bewerten wird.

Andere Tipps

Ich habe Code dies zu tun, es könnte ausführlicher sein als nötig, aber verschachtelte js Dateien sollten kein Problem sein.

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

Es scheint ein weit verbreitetes Problem:

scroll top