Ne peut pas exécuter le code d'un script libéré
J'ai une fonction que dans un cadre différent que j'ai besoin de remplacer. En plus, j'ai besoin d'appeler la fonction d'origine de l'intérieur de mon remplacement. Pour ce faire, je suis en utilisant les suivantes:
myFrame.SomeFunction = (function () {
var originalSomeFunction = myFrame.SomeFunction;
return function(arg1, arg2, arg3) {
alert('In override!');
originalSomeFunction(arg1, arg2, arg3);
};
})();
Lorsque j'exécute ce code, j'obtiens un "ne Peut pas exécuter le code d'un script libéré".
Pensées? Est-il une meilleure façon de le faire? Des tests dans internet explorer 6,7,8 et 9.
fonctionne très bien pour moi en FF, Chrome et IE.. quel navigateur utilisez-vous ? Il pourrait être une autre partie de votre code qui est à l'origine de ce..
Le cadre le plus probable n'existe plus au moment où vous essayez d'y accéder. Voir: stackoverflow.com/questions/83132/...
J' besoin pour savoir ce que fait un
Les gars, "script libéré" est une partie du message d'erreur que je reçois de l'ei. Si vous ne savez pas ce "script libéré" signifie ne pas répondre à ma question.
Libéré dans ce contexte signifie libéré de la mémoire, de sorte supprimé ou manquant. Je l'ai appris par @iwburk commentaire
Le cadre le plus probable n'existe plus au moment où vous essayez d'y accéder. Voir: stackoverflow.com/questions/83132/...
J' besoin pour savoir ce que fait un
freed script
moyens!Les gars, "script libéré" est une partie du message d'erreur que je reçois de l'ei. Si vous ne savez pas ce "script libéré" signifie ne pas répondre à ma question.
Libéré dans ce contexte signifie libéré de la mémoire, de sorte supprimé ou manquant. Je l'ai appris par @iwburk commentaire
OriginalL'auteur RMD | 2011-12-06
Vous devez vous connecter pour publier un commentaire.
Vous ne pouvez pas le faire dans IE, vous avez découvert. Vous devez vous assurer que tous les objets que vous passez entre les images sont originaires des choses comme des chaînes de caractères. Même "Date" les instances ont m'a causé des problèmes, si c'était à obscurcir les versions de Windows 2000 retour dans la journée.
Par "script libéré" que IE signifie que votre le contexte de la page où un objet est "né" a été remplacé par une nouvelle page.
Oui, vous pouvez, mais le problème se produit lorsque vous avez un "vicié" objet qui était né dans une autre page. Dès que votre code tente de le toucher, c'est à dire se rend compte que son prototype de l'objet (etc.) s'en sont allés. C'est juste la façon dont le JScript mécanisme semble fonctionner.
Ce qui dans mon code représente la "périmé" de l'objet? Comment puis-je modifier ce code pour empêcher que cela se produise?
Eh bien, il a probablement quelque chose à voir avec les choses passées et repassées entre les pages. Ou, peut-être, si vous substituez la fonction dans l'autre image, puis l'image à partir de laquelle vous faites qui est écrasé. Maintenant, si vos images sont complètement statique et elles ne sont jamais rechargé avec de nouvelles pages à partir du serveur, alors que c'est un nouveau sur moi.
OriginalL'auteur Pointy
J'ai trouvé la solution.
Fondamentalement, vous prenez tous les code que j'ai précédemment posté, et de les exécuter dans le contexte de l'image cible à l'aide de la fonction eval (). Alors...
Parce que le code est présent à l'intérieur de l'image cible, il n'est pas hors de portée, et nous n'obtenons pas les "libérés" erreur de plus.
OriginalL'auteur RMD
Si vous êtes venus ici à partir de google et sont à la recherche d'une solution simple pour résoudre ce problème dans IE:
Dans notre cas, le problème s'est produit, parce que nous travaillions avec des événements entre les iframes. En faisant ainsi, il est possible que, sur le changement du contenu de l'iframe est combiné avec un événement déclenché, il allait tenter d'appeler le script sur le changé iframe document. cela a soulevé l'exception en question.
en ajoutant
le problème cesserait d'être soulevées. Enfin pas de try/catch à cause d'IE.
handler
est facultative - de sorte que vous pouvez faire (par exemple).off('click')
si vous pouvez effacer tous les jQuery gestionnaires de clic sur l'élément cible.OriginalL'auteur Dbl
Je sais que cette question est assez vieux, mais dans le cas où vous exécutez sur ce, je vous suggère d'utiliser JSON.analyser pour créer un objet sur l'image parent, plutôt que de eval car eval est le mal (ce qui cause des problèmes de sécurité, je pense que c'est désactivé par défaut dans certains navigateurs trop de nos jours)
par exemple, si vous voulez l'appeler
someFunction
sur l'image 1, en lui passant en paramètre un objet JSON, utilisez quelque chose comme ci-dessous:OriginalL'auteur Dead.Rabit