Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Преобразовать строку в HTML код (обратное htmlspecialchars из php) (https://javascript.ru/forum/misc/57836-preobrazovat-stroku-v-html-kod-obratnoe-htmlspecialchars-iz-php.html)

laimas 22.08.2015 18:25

Цитата:

Сообщение от daslex
Проблема в том, что если не преобразовывать HTML код в HTML сущности, то при передаче текстовых данных в массив возникают непонятные мне проблемы.

В какой массив и зачем? Речь ведь идет о странице, код которой представлен, и которую нужно всего лишь навсего вывести в новом окне.

daslex 22.08.2015 18:26

Много файлов, в каждом файле свой код. Окно открывается одно. Т.к. файлов много, то удобно записывать их в массив, а потом передавать в открываемое окно.
В результате, в зависимости от выбранного пользователем <div> элемента, в открытое окно должен вписаться соответствующий этому <div> текст, который в свою очередь и хранится на сервере.

Массив или переменная не одно ли и то же?. Массив всего лишь хранит много переменных, но его переменная, это обычная переменная, ничем от других переменных не отличающаяся.

laimas 22.08.2015 18:28

Нужно отделять мух от котлет, иначе у вас слишком много бесполезной работы.
1) Кто хозяин этих описаний?
2) Ваш сайт динамический или статический?

KosBeg 22.08.2015 18:36

а загрузить аяксом нужную страницу не пробовали?

daslex 22.08.2015 18:40

Задача моя. Ставил себе её я сам. Решение мне действительно нужно.
В Javascript я ничего не знаю. Я в этом признался честно и повторяю сейчас.
Кусочек с php писал я. C экранированием и html сущностями мне подсказали.

javascript под открытия окна писал я. Искал как делать много, долго и упорно. Настоящего автора сказать не могу. Я не знаю кто это был, я использовал его труд. То же самое для клика по <div>, автора сказать не могу, но выискал я своими силами.
HTML код написан мной.

Подход к решению выбран мной с некоторыми корректировками другими людьми.
__________________

И кто здесь автор описаний? Вроде не я, а вроде и я с некоторой помощью других людей.

__________________

daslex 22.08.2015 18:42

Я не знаю Аякса. Если в javascript я хотя бы document.write знаю, то там не знаю ничего. И скорее всего там будет эта же проблема, что сейчас стоит передо мной.

daslex 22.08.2015 18:55

Сейчас я быстро отвечать не могу, я отхожу от компа. Вечером вернусь. Часов в 23.00 по Москве...

И все-таки очень надеюсь, что решение найти поможете. Как-никак, отвечаете мне. Но надеюсь, что допросы прекратятся, если кому нужно слишком много деталей, готов показать своими глазами, что мне нужно, что у меня есть и что у меня не получается (с помощью teamviewer). Это займет намного меньше времени, чем писать ответы на все тонкости, колкости и проверку на "халявщика".

сейчас отхожу от компа.

laimas 22.08.2015 19:16

Цитата:

Сообщение от daslex
Но надеюсь, что допросы прекратятся, если кому нужно слишком много деталей, готов показать своими глазами

А кто вас допрашивает? Если хозяин описаний вы, если сайт динамический, то почему описания кода хранятся не в базе (а уж там и как раз и место), а свалены а какие-то файлы, к тому же так бездумно отдаваемые клиенту?
Если же все будет на севере организовано надлежащим образом, то запрос каждого описания, это полученное из базы через htmlspecialchars(), и вставленное в один и тот же шаблон html-кода. А какое описание запрашивается, а значит и вставляется, определяется параметром запроса в url для window.open(), а не получается из какого-то массива, который вообще не нужен.

Впрочем как хотите, но что-то советовать не зная всего трудно, и если это для вас "допрос"... ну значит майтесь с массивами и прочим.

KosBeg 22.08.2015 21:17

Когда-прийдете - попробуйте это
<script type='text/javascript' >
function MyFunc(url){
  var xhr = new XMLHttpRequest();
  xhr.open('GET', url, true);
  xhr.send();
  xhr.onreadystatechange = function() {
    if (xhr.readyState != 4) return;
    if (xhr.status != 200) {
      alert('Ошибка: ' + xhr.status + '|' + xhr.statusText);
    } else {
      var NewWin=window.open('','','...');
      NewWin.document.write(xhr.responseText); // xhr.responseText - переменная в которой хранится нужный текст
    }
  }
}

// вызывать функцию так - MyFunc('MyFiles/MyFile.php')
</script>
 
<div id="id2" >
 <b>Кликни меня</b><br />
<script type='text/javascript'>  
document.getElementById("id2").onclick = MyFunc("<?php echo $url ?>"); // $url - нужный адрес, например у вас - "MyFiles/MyFile.php"
</script>
</div>

daslex 22.08.2015 21:54

KosBeg,
Так ничего вообще не происходит. Даже окно не открывается.

laimas,
С базой, конечно, должно быть удобнее решать, но я не умею работать с бд в принципе. И я не знаю насколько удобно потом вносить правки во все файлы максимально быстро. Да и само обращение к файлам работает быстрее чем обращение к бд.
Так-то если надо отдельный файл попраивть или массово что-то там дописать/изменить, то я могу себе что-то свое написать несложное. Из-за 1 правки импортировать бд в пару десятков МБ) Немного забавно, но неудобно. Мой интернет не безлимитный, а безлимитный интернет у меня по географическому положению в принципе отсутствует и еще лет 200 не будет.

Я в принципе не против решения с бд, но как я сказал, я не умею с ней работать программно. Сайт на Wordpress/ Что-то там портить в бд мне не хочется совсем.


Часовой пояс GMT +3, время: 02:07.