“DataCloneError: L'objet ne peut pas être cloné.” dans FireFox 34
À l'aide de la fonction de poster un message, mais d'avoir d'erreur "DataCloneError: L'objet ne peut pas être cloné." à la Ligne "cible['postMessage'](message, target_url.remplacer( /([^:]+://[^/]+).*/, '$1'));" dans FireFox-34, le même code fonctionne très bien sur Chrome et ancienne version de FireFox.
var storage = function() {
return {
postMessage : function(message, target_url, target) {
if (!target_url) {
return;
}
var target = target || parent; //default to parent
if (target['postMessage']) {
//the browser supports window.postMessage, so call it with a targetOrigin
//set appropriately, based on the target_url parameter.
target['postMessage'](message, target_url.replace( /([^:]+:\/\/[^\/]+).*/, '$1'));
}
}
}
}();
Quel est le type de "message" qui est d'essayer d'être affiché lorsque l'erreur se produit? Blob ou d'un Fichier peut-être?
Si le
Si le
message
variable passée comprend des nœuds du DOM des objets comme un DocumentFragment
objet, vous aurez besoin de convertir une chaîne de caractères à l'aide de la XMLSerializer.prototype.serializeToString
méthode avant de l'envoyer. Vous pouvez utiliser un DOMParser
objet ou de la Element.prototype.innerHTML
, Element.prototype.insertAdjacentHTML
, ou Element.prototype.outerHTML
méthodes pour unserialize l'objet sur l'autre extrémité.OriginalL'auteur Krishna | 2014-12-19
Vous devez vous connecter pour publier un commentaire.
postMessage
envoie des messages à l'aide de la structuré clone algorithme dans Firefox, et à cause de cela, il ya certaines choses que vous devez régler avant de l'envoyer.Dans votre exemple, il n'est pas évident que ce message contient mais un hack-y de façon structurée autour de clone est de forcer un peu. L'envoi d'une URL à l'aide d'
postMessage
renvoie une erreur:Mais vous pouvez le faire pour le contourner:
Il y a de meilleures façons de gérer cette situation, mais pour ce que vous avez fournis, cela devrait au moins permettre à un comportement cohérent.
window.location.href
qui est la valeur de l' "tostring" méthode de référencement, je vous remercie.OriginalL'auteur Michael Thompson