Can ' T execute code eines freigegebenen Skripts
Ich habe eine Funktion, die in einem anderen Rahmen, dass ich außer Kraft setzen müssen. Außerdem, muss ich anrufen die original-Funktion aus, die in meiner überschreiben. So zu tun, ich bin mit dem folgenden:
myFrame.SomeFunction = (function () {
var originalSomeFunction = myFrame.SomeFunction;
return function(arg1, arg2, arg3) {
alert('In override!');
originalSomeFunction(arg1, arg2, arg3);
};
})();
Wenn ich diesen code ausführen, bekomme ich "Can' T execute code eines freigegebenen Skripts".
Gedanken? Gibt es einen besseren Weg, dies zu tun? Testen im IE 6,7,8 und 9.
funktioniert bei mir in FF, Chrome und IE.. welchen browser verwendest du ? Es könnte sein, einen anderen Teil im code, der dies verursacht..
Der Rahmen wahrscheinlich nicht mehr vorhanden ist, auf die Zeit, die Sie versuchen, darauf zuzugreifen. Siehe: stackoverflow.com/questions/83132/...
Ich brauchen um zu wissen, was macht ein
Jungs, "befreit" Skript ist Teil der Fehlermeldung, die ich bekomme vom IE. Wenn Sie nicht wissen, was "befreit Skript" bedeutet, dass Sie nicht reagieren auf meine Frage.
Befreit bedeutet in diesem Zusammenhang, befreit von der Speicher so gelöscht/fehlen. Ich fand heraus, von @iwburk Kommentar
Der Rahmen wahrscheinlich nicht mehr vorhanden ist, auf die Zeit, die Sie versuchen, darauf zuzugreifen. Siehe: stackoverflow.com/questions/83132/...
Ich brauchen um zu wissen, was macht ein
freed script
bedeutet!Jungs, "befreit" Skript ist Teil der Fehlermeldung, die ich bekomme vom IE. Wenn Sie nicht wissen, was "befreit Skript" bedeutet, dass Sie nicht reagieren auf meine Frage.
Befreit bedeutet in diesem Zusammenhang, befreit von der Speicher so gelöscht/fehlen. Ich fand heraus, von @iwburk Kommentar
InformationsquelleAutor RMD | 2011-12-06
Du musst angemeldet sein, um einen Kommentar abzugeben.
Kannst du das nicht im IE, die Sie entdeckt haben. Sie müssen sicherstellen, dass alle Objekte, die Sie passieren zwischen den frames sind native Dinge wie strings. Auch "Datum" Instanzen verursacht mir Probleme, obwohl das war auf obskure Versionen von Windows 2000 wieder in den Tag.
Durch "befreite Skript", was DH bedeutet, dass Ihre die page Kontext, in dem ein Objekt war "geboren" überschrieben wurde durch eine neue Seite.
Ja, Sie können, aber das problem, geschieht wenn Sie eine "veraltete" Objekt, das geboren wurde, in einem anderen Seite. Sobald der code versucht, es zu berühren, DH erkennt, dass seine Prototyp-Objekt (und etc.) sind gegangen. Es ist einfach so, dass die JScript-Mechanismus scheint zu funktionieren.
Was in meinem code steht für die "veralteten" Objekt? Wie kann ich diesen code ändern, um dies zu verhindern?
Nun, es hat wahrscheinlich etwas zu tun mit Dingen, die hin und her übergeben zwischen die Seiten. Oder, vielleicht, wenn Sie die Funktion überschreiben in den anderen Rahmen und dann das Bild aus, das Sie tun, die überschrieben wird. Nun, wenn Eure frames sind völlig statisch, und Sie sind nie reloaded mit neuen Seiten vom server, dann ist ein neues auf mich.
InformationsquelleAutor Pointy
Dachte ich, die Lösung.
Im Grunde, Sie nehmen alle den code, den ich vorher gepostet, und die führen Sie dann aus, die im Kontext der Ziel-frame mit der Funktion eval (). So...
Weil der code nun in den Ziel-frame, es geht nicht, out of scope, und wir nicht bekommen, die "befreit" Fehler mehr.
InformationsquelleAutor RMD
Wenn Sie kommen, hier von google und sind auf der Suche für eine einfache Lösung, um dieses problem zu beheben, im Internet Explorer:
In unserem Fall ist das problem aufgetreten, denn wir arbeiteten mit den Ereignissen zwischen iframes. Dadurch war es möglich, dass bei einer änderung der iframe-Inhalt in Kombination mit einer ausgelösten Fall es würde versuchen, rufen Sie das Skript auf die nun geänderte iframe-Dokument. dies erhöht die Ausnahme in Frage stellen.
durch hinzufügen
würde das problem nicht mehr angehoben. Endlich kein try/catch, da der IE.
handler
ist optional - man kann also (zum Beispiel).off('click')
wenn kann man alle löschen, jQuery click-Handler auf das Ziel-element.InformationsquelleAutor Dbl
Ich weiß, diese Frage ist ziemlich alt, aber bei diesem würde ich vorschlagen, dass Sie JSON verwenden.analysieren, um ein Objekt zu erstellen, die auf den übergeordneten Rahmen statt eval, denn eval ist böse (verursacht Sicherheitsprobleme, ich denke, es ist standardmäßig deaktiviert, die in einigen Browsern zu heute)
zum Beispiel, wenn Sie anrufen möchten
someFunction
auf Bild 1, übergeben Sie ein JSON-Objekt, verwenden Sie so etwas wie die unten:InformationsquelleAutor Dead.Rabit