2016-04-05 12 views
3

Wir haben ein Problem mit einer Funktion (createContextualFragment) in Safari.CreateContextualFragment funktioniert nicht in Safari

Wir müssen etwas Inhalt in den Körper einfügen, also verwenden wir diese Codezeile.

Code:

document.getElementsByTagName('body')[0].insertBefore(document.createRange().createContextualFragment("<div></div><script src="LINK_SOURCE"></script>"), null); 

Diese Codezeile funktioniert gut mit Chrome und Firefox, aber wir einige Probleme mit createContextualFragment in Safari haben.

Fehler in Safari:

createContextualFragment — asyncronousDocumentWrite2.html:28:115NotSupportedError: DOM Exception 9: The implementation did not support the requested type of object or operation.

Antwort

0

Ich weiß, dass meine Antwort ein wenig zu spät ankommt, aber ich vor kurzem lief in einer ähnlichen Situation.

Was ich

Nach https://developer.mozilla.org/en-US/docs/Web/API/Range/createContextualFragment#Browser_compatibility Range.createContextualFragment() wird nicht unterstützt in Safari 9.0 oder 9.1 gefunden. Es funktioniert jedoch gut in Safari 10.

Was können Sie tun?

Da Safari createContextualFragment nicht unterstützt, können wir die Verantwortung für die Erstellung unseres Dokumentfragments an jQuery delegieren. Die folgende Abbildung zeigt zwei Möglichkeiten, dies zu tun, je nachdem, welche Version von jQuery Sie verwenden:

  1. jQuery 1.8 oder neue Verwendung ParseHTML
    document.getElementsByTagName('body')[0].insertBefore($.parseHTML("<div></div><script src='http://google.ca'></script>"), null);

  2. Ansonsten nur jQuery lassen herauszufinden, was zu tun
    document.getElementsByTagName('body')[0].insertBefore($("<div></div> <script src='http://google.ca'></script>"), null);

Verwandte Themen