Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Нужна помощь по JavaScript!!! (https://javascript.ru/forum/misc/4871-nuzhna-pomoshh-po-javascript.html)

TehnoMag 26.08.2009 02:11

Нужна помощь по JavaScript!!!
 
здравствуйте. Меня интересует такая проблемма.

Есть Простенький текстовый редактор <textarea>

в нем должен отображаться HTML и PHP скрипты.

Из-за проблеммы связанной в возможном появлении в texarea полей
<textarea>тексе или функция</textarea.

Написал небольшой обработчик на JavaScript.

вот функция загрузки редактора
function editfile()
{
if (!isset($_SESSION['editsite']))
{
  Header("Location: index.php");
}

$result = sql_res_req("sites", "url='$_SESSION[editsite]'");
$out = mysql_fetch_row($result);

if ($_GET['dir'] <> "")
{
  $out[1] = $out[1]."/".$_GET['dir'];
}

print"Текстовый редактор. Открыт файл $_GET[editfile]<br>\n";
print"<a href=index.php?editsite&dir=$_GET[dir]>Закрыть без сохранения</a> - \n";
print"Сохранить<br>\n";

print"<div id=tbox class=screen>";
readfile($out[1]."/".$_GET['editfile']);
print"</div>";
print"<textarea cols=100 rows=40 id=editor></textarea>";
print"<script language=JavaScript src=scripts/java/editor.js></script>";
}
?>


диф, в который изначально грузиться файл имеет параметр display: none, т.е. он невидимый.
Задача JavaScript`а перетащить содержимое дифа в текстарию

вот сам скрипт

var box = document.getElementById('tbox').innerHTML;
document.getElementById('editor').value = box;


Проблема в том, что перетаскиваеться не весь текст а только отрывки.

dyadya 26.08.2009 08:33

Цитата:

диф, в который изначально грузиться файл имеет параметр display: none, т.е. он невидимый.
display: none - блок временно удалён из документа и в настоящий момент времени в потоке не существует.

Попробуйте использовать visibility: hidden

Kolyaj 26.08.2009 09:06

Цитата:

Сообщение от dyadya
display: none - блок временно удалён из документа и в настоящий момент времени в потоке не существует.

В потоке не существует, а в DOM-дереве существует.

TehnoMag 26.08.2009 13:19

Господа. В диве проблем нет никаких.
проблема в innerHTML, который обрезает html и php код.
для html он обрезает теги html head и body
а вот обрезку php я пока не полнял.
Есть ли свойство этемента div в JavaScript, чтобы получить доступ к тексту внутри него в виде Как есть?

Kolyaj 26.08.2009 13:48

В диве не может быть ни PHP-кода, ни html, head, body. Пихайте все сразу в textarea.

TehnoMag 26.08.2009 14:08

окей. вот пример пихания сразу в техтарию

<textarea>
блаблаблаблабла
<textare>блаблабла</textarea> //Вывод в текстарию редактора обломиться здесь. При сохранении кстати он тоже сохранит до этой арии, т.е каждый раз открывая подобный скрипт мы дожны будем дописывать то, что не попало в него
блаблабла
</textarea>

А вот результат вывода прямо в textarea на скриншоте, для тех кто не видет в этом методе ни какой беды:
http://distrib.data.cod.ru/photos/5/...6a71bf1da5.jpg

Kolyaj 26.08.2009 14:29

Потому что передача html-кода посредством запихивания его в DOM-дерево, в общем случае, не лучшая идея. Экранируйте переводы строк и кавычки и передавайте обычной строкой.

TehnoMag 26.08.2009 15:08

Вопрос снят. Вышел из положения без JavaScript
вот код переписанной функции

function editfile()
{
if (!isset($_SESSION['editsite']))
{
  Header("Location: index.php");
}

$result = sql_res_req("sites", "url='$_SESSION[editsite]'");
$out = mysql_fetch_row($result);

if ($_GET['dir'] <> "")
{
  $out[1] = $out[1]."/".$_GET['dir'];
}

$fname = $out[1]."/".$_GET['editfile'];
$f = fopen($fname, "r");
$str = fread($f, filesize($fname));
fclose($f);
$str = str_replace("<", "&lt;", $str);
$str = str_replace(">", "&gt;", $str);

print"Текстовый редактор. Открыт файл $_GET[editfile]<br>\n";
print"<a href=index.php?editsite&dir=$_GET[dir]>Закрыть без сохранения</a> - \n";
print"Сохранить<br>\n";
print"<textarea cols=100 rows=30>$str</textarea>";
}


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