Теги выборочно удалены из HTML-элементов из источника

У нас есть веб-форма asp.net, извлекающая разметку из базы данных и отправляющая в браузер для отображения в виде html.

Html выборочно удаляется из тегов html только из части этой разметки и вместо этого отображается как обычный текст.

Я проверил исходный код, и все теги присутствуют, поэтому вряд ли проблема сервера с контроллером asp (я все равно проверил, см. ниже) - я проверил правильность html на validator.w3c.org, и ничего нет. браузер должен удалить как недействительный.

Контроллер в веб-форме asp:literal, поэтому я подумал, что он может быть в неправильном режиме, однако я поиграл с этим, и улучшений нет. Кроме того, часть html в любом случае отображалась правильно, так что вряд ли это всегда было проблемой.

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

Итак, код в исходниках:

<div class='classname class'>
   <div class='classname'>
      <div class='classname'><img id = 'myImg' src='https://imgurl.com' alt='A Description'></div>
   </div>
   <div class='classname'>
      <h1>A Heading of My Subject</h1>
      <p class='classname'>And then some more.</p>
   </div>
   <div id='myId'>
      <div class='classname'>
         <h1> A Heading of My Subject </h1>
         <p>Stripping subject from text.</p>
         <h2> A Secondary Heading for More Info</h2>
         <p>An abstraction of my paragraph text.</p>
         <h2> Another Secondary Heading </h2>
         <p>Lorem Ipsum forever!</p>
         <p>And yet another paragraph.</p>
      </div>
   </div>
</div>

Фактический HTML-код:

<div class='classname class'>
   <div class='classname'>
      <div class='classname'><img id = 'myImg' src='https://imgurl.com' alt='A Description'></div>
   </div>
   <div class='classname'>
      <h1>A Heading of My Subject</h1>
      <p class='classname'>And then some more.</p>
   </div>
   <div id='myId'>
      <div class='classname'>
         " A Heading of My Subject 
         Stripping subject from text.
         A Secondary Heading for More Info
         An abstraction of my paragraph text.
         Another Secondary Heading 
         Lorem Ipsum forever!
         And yet another paragraph."
      </div>
   </div>
</div>

Любопытно, что добавляются и двойные кавычки, не знаю, что там происходит.

Соответствующий код программной части:

Page.Title = Name + " - " + Var;
LocOutput.Append("<div class='classname'>" + Environment.NewLine);
LocOutput.Append("<div class='classname'>" + Environment.NewLine);
LocOutput.Append("<div class='classname'><img id='asd' src='" + imgurl + "' alt='" + imgdescription + "'></div>" + Environment.NewLine);
LocOutput.Append("</div>" + Environment.NewLine);
LocOutput.Append("<div class ='classname'><h1>" + Name + "</h1><p class='classname'>" + Name2 + "</p></div>" + Environment.NewLine);
LocOutput.Append("<div id = 'idNameo'><div class ='classname'>" + Content + "</div></div>" + Environment.NewLine);

if (myVar == "condition")
{
    LocOutput.Append("<div id = 'idNameod2' value = '" + Var3+ "'></div>" + Environment.NewLine);
}
LocOutput.Append("</div>" + Environment.NewLine);
LocationDetails.Text = LocOutput.ToString();

Удаленный html полностью находится внутри переменной Content.

Контроль это:

<asp:Literal ID = "LocationDetails" runat = "server"/>

Вы смотрели, что загружается в ваш браузер с помощью такого инструмента, как Fiddler. Вы говорите, что браузер выполняет зачистку. Но это может быть где-то на сервере, или прокси, или... Это происходит только с одним браузером? Одна версия? Какой браузер, какая версия?

Flydog57 23.07.2019 02:06

Хорошо, да, вы правы, браузер является причиной, это только мое предположение, я отредактировал ответ, чтобы отразить это. Я воспроизвел на Chrome 75.0.3770.142 64-бит, Firefox 65.0 64-бит и Edge 42.17134.1.0.

washboardalex 23.07.2019 02:37

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

washboardalex 23.07.2019 02:49

@washboardalex используйте Замените строковые переменные, замените двойные кавычки, одинарные кавычки, теги <, > пустыми строками. посмотрите, исправит ли это это.

iSR5 23.07.2019 02:53

asp:literal — это control, а не controller. следите за этим. контроллеры являются важными вещами в asp.net mvc, поэтому важно указать.

wazz 23.07.2019 05:24

Попробуйте предварить свои строки знаком @. Если в строке встречается ключевое слово, без @ может возникнуть проблема. Пример: @"<div class='classname'>". Что-то определенно происходит в Control, но мы не видим, откуда берется строка.

wazz 23.07.2019 05:28

Проблема была не в строке, не в браузере. Что-то идет по проводам из другого модуля на странице (мы используем DNN). Я удалил проблемный модуль, и теперь HTML отображается правильно. В настоящее время я фильтрую сетевой трафик с помощью блокировки запросов, чтобы изолировать причину, обновлю страницу с ответом, когда получу его.

washboardalex 29.07.2019 09:58
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
7
54
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Причиной в этом случае был некоторый javascript, удаляющий html как часть вставки данных после вызова AJAX:

var desc = $('#elemId').find('.more').text();
desc = desc.replace("(random data)", randomDataVar);

Метод обращался к внутреннему тексту, но после замены вставлял его обратно в innerHTML.

Я напрямую обратился к innerHTML, чтобы решить эту проблему:

var desc = document.getElementsByClassName('more')[0];
desc.innerHTML = desc.innerHTML.replace("(random data)", randomDataVar);

Другие вопросы по теме