Как правильно вставить большую строку в div чтобы работало в браузере edge and IE 11?

Всем здравствуйте
Хочу вывести длинную строку сформированную в цикле. Все браузеры отрабатывают хорошо и показывают задуманное. Вот только ie 11 and Edge ничего не показывают
str += '<div data-flag="false" data-one="false" data-group="false" class="group" id="group-' + n + '" style="width:' + game.pieceSizeLine + 'px; height:' + game.pieceSizeLine + 'px;">
<div class="piece" id="piece-' + i + '-' + j + '" style="width:' + game.pieceSizeLine + 'px; height:' + game.pieceSizeLine + 'px;">' + svg + '</div></div>';


И добавляю ее в div ну допустим так
codeconst gameFloorPuzzleLine = document.querySelector('.game-floor__puzzle-line');
	gameFloorPuzzleLine.innerHTML = str;

В строке все правильно - работает во всех остальных браузерах ( ну кроме ie 11 and Edge )

В ИE только формируется
<div class="group" id="group-4" style="width: 127.6px; height: 127.6px;" data-group="false" data-one="false" data-flag="false"></div>

и все. ВОПРОС А ГДЕ ВНУТРЕННОСТИ ?????
const svg =
		'<svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" ' +
		'width="' + (puzzleSize + borderSize * 2) + 'px" height="' + (puzzleSize + borderSize * 2) + 'px" version="1.1"' +
		'class="puzzle" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 250 250">' +
		'<defs><filter id="filter" x="0" y="0">' +
		'<feGaussianBlur stdDeviation="1" /></feGaussianBlur>' +
		'<feOffset dx="1" dy="1" /></feOffset>' +
		'</filter>' +
		'</defs>' +
		'<clipPath id="path' + puzzleNumber + '">' +
		'<path d="' + border.top + border.right + border.bottom + border.left + '"></path>' +
		'</clipPath>' +
		'<g stroke="black" stroke-width="2" stroke-opacity="0.5" >' +
		'<g style="clip-path:url(#path' + puzzleNumber + ')">' +
		'<image xlink:href="' + imageObj.src + '" x="' + (50 - (position.column - 1) * 150) +
		'" y="' + (50 - (position.row - 1) * 150) +
		'" width="' + imageObj.naturalWidth * imageScale + '" height="' + imageObj.naturalHeight * imageScale + '"></image>' +
		'</g>' +
		'<path filter="url(#filter)" class="puzzle-border" fill="transparent" d="' + border.top + border.right + border.bottom + border.left + '"></path>' +
		'</g>' +
		'</svg>';
  • Вопрос задан
  • 1707 просмотров
Решения вопроса 1
ThunderCat
@ThunderCat Куратор тега JavaScript
{PHP, MySql, HTML, JS, CSS} developer
Это конечно не очень хороший совет, но попробуйте через jquery, у него вроде совместимость с разными браузерами это фича.
В интернетах пишут что этот специфический глюк обходится заранее созданным элементом div, в него все фигачется через innerHTML, и этот див уже аппендится куда надо.
var newdiv = document.createElement("div");
newdiv.innerHTML = someString;
var container = document.getElementById(id);
container.appendChild(newdiv);
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@Yurajun Автор вопроса
Именно то решение что нужно!!!
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы