"DataCloneError: Das Objekt konnte nicht geklont werden." in FireFox 34
Mit Funktion, post-Meldung, aber immer Fehler "DataCloneError: Das Objekt konnte nicht geklont werden." in Zeile "Ziel['postMessage'](Nachricht, target_url.ersetzen( /([^:]+://[^/]+).*/, '$1'));" in FireFox 34, der gleiche code funktioniert auf Chrome und ältere version von 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'));
}
}
}
}();
Was ist die Art von "Botschaft", die versucht, gebucht werden, wenn der Fehler Auftritt? Blob oder Datei vielleicht?
Wenn die
Wenn die
message
variable übergeben wird enthält DOM-Knoten-Objekte, wie zum Beispiel DocumentFragment
Objekt, müssen Sie es konvertieren in eine Zeichenfolge mit der XMLSerializer.prototype.serializeToString
Methode, bevor Sie senden. Sie können eine DOMParser
Objekt oder die Element.prototype.innerHTML
, Element.prototype.insertAdjacentHTML
oder Element.prototype.outerHTML
Methoden zu unserialize das Objekt auf das andere Ende.InformationsquelleAutor Krishna | 2014-12-19
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
postMessage
sendet Nachrichten mit dem strukturierte Klon-Algorithmus in Firefox und deshalb gibt es bestimmte Dinge, die Sie anpassen müssen, vor dem versenden.In deinem Beispiel ist es nicht offensichtlich, welche Botschaft enthält, sondern eine hack-y-Weg um strukturierte Klon ist, jemanden zu nötigen etwas. Senden einer URL mittels
postMessage
wirft einen Fehler:Aber Sie können dies tun, das zu umgehen:
Gibt es bessere Möglichkeiten, dies zu behandeln, aber für das, was Sie haben, sofern diese sollten zumindest erlauben, ein einheitliches Verhalten.
window.location.href
ist der Wert der "tostring" Methode wäre, Referenzierung, danke.InformationsquelleAutor Michael Thompson