2016-04-05 3 views
3

У нас возникла проблема с функцией (createContextualFragment) в сафари.CreateContextualFragment не работает в сафари

Нам нужно добавить контент в тело, поэтому мы используем эту строку кода.

Код:

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

Эта строка кода работает отлично с Chrome и Firefox, но у нас есть некоторые проблемы с createContextualFragment в Safari.

Ошибка в Safari:

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

ответ

0

Я понимаю, что мой ответ прибывает немного поздно, но я недавно столкнулся с подобной ситуацией.

Что я нашел

Согласно https://developer.mozilla.org/en-US/docs/Web/API/Range/createContextualFragment#Browser_compatibility Range.createContextualFragment() не поддерживается в Safari 9.0 или 9.1. Однако он отлично работает в Safari 10.

Что вы можете сделать?

Поскольку Safari не поддерживает createContextualFragment, мы можем делегировать ответственность за создание нашего фрагмента документа в jQuery. Ниже показаны два варианта, чтобы сделать это в зависимости от того, какую версию JQuery вы используете:

  1. JQuery 1.8 или новее использование ParseHTML
    document.getElementsByTagName('body')[0].insertBefore($.parseHTML("<div></div><script src='http://google.ca'></script>"), null);

  2. В противном случае просто дайте JQuery понять, что не включенные в другие группировки
    document.getElementsByTagName('body')[0].insertBefore($("<div></div> <script src='http://google.ca'></script>"), null);

Смежные вопросы