За последние 24 часа нас посетил 18041 программист и 1650 роботов. Сейчас ищут 1124 программиста ...

Передача переменной в JS

Тема в разделе "JavaScript и AJAX", создана пользователем xak2, 29 май 2007.

  1. xak2

    xak2 Guest

    есть файл в админке editnews.php в которой установлен html Редактор написаный на явескрипте. В самом низу подсоеденяется скрипт:

    [js]<script src="editor/editor.js"></script>[/js]

    В начале этого скрипта:

    [js]var Content = "";[/js]

    Как в этоу переменную передать данные из editnews.php - $row['news'], т.е. эта переменная появляется путем извлечения из базы скриптом находящимся в начале editnews.php и ее надо передать в editor/editor.js. Как это сделать?
     
  2. armadillo

    armadillo Активный пользователь

    С нами с:
    6 апр 2007
    Сообщения:
    2.380
    Симпатии:
    0
    Адрес:
    Russia, Moscow
    в инклуженных скриптах надо писать функциями, а не потоком мыслей.

    editnews.php:
    PHP:
    1. echo '<script type="...>var Content='.$row['news'].';
    2. window.Content=Content;</script>
    3. <script type="... src="editor/editor.js">';
    Но это все равно аукнется, надо переделать этот эдитор в функцию.
     
  3. Vitas

    Vitas Активный пользователь

    С нами с:
    7 фев 2006
    Сообщения:
    595
    Симпатии:
    0
    Адрес:
    Новосибирск, Академгородок
  4. xak2

    xak2 Guest

    Ничего не получается. Если удалить переменную Content из edit.js то он зависает на половине, если добавить эту переменную в editnews.php перет <script src="editor/editor.js"></script> всеравно завсиает. Че делать?
     
  5. armadillo

    armadillo Активный пользователь

    С нами с:
    6 апр 2007
    Сообщения:
    2.380
    Симпатии:
    0
    Адрес:
    Russia, Moscow
    телепатов нема.
     
  6. Vitas

    Vitas Активный пользователь

    С нами с:
    7 фев 2006
    Сообщения:
    595
    Симпатии:
    0
    Адрес:
    Новосибирск, Академгородок
    Чего? о_О
    PHP:
    1. <?php
    2.     include "editnews.php";
    3. ?>
    4. <script>
    5.     var Content = "<?php echo addcslashes($row["news"], '"') ?>";
    6. </script>
     
  7. xak2

    xak2 Guest

    Ну а так понятно? Content в editor.js отвечает за то что будет отображаться в <iframe id="EditFrame" width="100%" height="400" frameborder="0" contenteditable="true"></iframe>

    editnews.php:
    PHP:
    1. <?php
    2.  
    3. $id = (int)$_GET['id'];
    4.  
    5. $sql = mysql_query("SELECT * FROM `news` WHERE `id` = '$id'");
    6. $row = mysql_fetch_assoc($sql);
    7.  
    8. ?>
    9. <STYLE>
    10.  
    11. body,td {font-family:Verdana,sans-serif;font-size:11px;}
    12. td.tools {font-size:12px; cursor:default;}
    13.  
    14. p,form {margin-top:0px;margin-bottom:0px;}
    15.  
    16. p.head {font-weight:bold; color:#ffffff}
    17.  
    18. textarea,input {font-weight:normal; font-size:11px; color:#000000; margin-top:0px; margin-bottom:0px; border-style: solid; border-width: 1px; border-color:#666666;}
    19. select,option {font-weight:normal; font-size:11px; font-family:Tahoma,Arial; margin-top:0px; margin-bottom:0px;}
    20. input.button {background:#d0d0d0; color:#000000; border-width:1px; border-color:#d0d0d0; }
    21. input.tbutton {background:#c0c0c0; color:#000000; border-width:1px; border-color:#666666;}
    22.  
    23. button {font-family:Tahoma,Arial,sans-serif; text-align:right; width:25px; height:25px; background:#dddddd; color:#000000; border-style: solid; border-width:1px; border-color:#dddddd;}
    24.  
    25. </STYLE>
    26.   <table width="100%" align="center" cellpadding="0" cellspacing="1" border="0" bgcolor="#666666">
    27.     <tr>
    28.       <td height="25" bgcolor="#dddddd"><form id="EditForm" action="index.php?page=addnews_save" method="post" enctype="multipart/form-data">
    29.     <input type="hidden" name="field" />
    30.     <input type="hidden" name="filename" />
    31.     &nbsp;Заголовок
    32.         <input name="title" type="text" size="35" value="<?=htmlspecialchars($row['title'])?>" />
    33.   </form></td>
    34.     </tr>
    35.     <tr>
    36.       <td height="25" bgcolor="#dddddd"><div id="tools"></div></td>
    37.     </tr>
    38.     <tr>
    39.       <td height="25" bgcolor="#dddddd"><div id="fonts">&nbsp;
    40.         Шрифт
    41.         <select name="select" id="fface" onchange="SetFace()">
    42.                       <option value="Arial">Arial </option>
    43.                       <option value="Courier New">Courier New </option>
    44.                       <option value="Tahoma">Tahoma </option>
    45.                       <option value="Times New Roman">Times New Roman </option>
    46.                       <option value="Verdana" selected="selected">Verdana </option>
    47.                     </select>
    48.         Размер
    49.         <select name="select" id="fsize" style="width:40" onchange="SetSize()">
    50.           <option value="1">1 </option>
    51.           <option value="2" selected="selected">2 </option>
    52.           <option value="3">3 </option>
    53.           <option value="4">4 </option>
    54.           <option value="5">5 </option>
    55.           <option value="6">6 </option>
    56.           <option value="7">7 </option>
    57.         </select>
    58.       </div></td>
    59.     </tr>
    60.     <tr>
    61.       <td bgcolor="#ffffff"><iframe id="EditFrame" width="100%" height="400" frameborder="0" contenteditable="true"></iframe></td>
    62.     </tr>
    63.     <tr>
    64.       <td height="15"><input name="button" type="button" class="button" style="width:100%" onclick="Save()" value="Сохранить" /></td>
    65.     </tr>
    66.   </table>
    67. [b]<script src="editor/editor.js"></script>[/b]
    editor.js:
    [js]var Content = "";

    var EditFieldHeader =
    "";
    var EditFieldHeaderOut =
    "";

    var EditFieldFooter = "";
    var EditFieldFooterOut = "";

    var PanelStyle = "<style>\n" +
    "body,td {font-family:Verdana,sans-serif;font-size:11px;}\n" +
    "form {margin-top:0px;margin-bottom:0px;}\n" +
    "textarea,input {font-weight:normal; font-size:11px; color:#000000; font-family:Tahoma,Arial; margin-top:0px; margin-bottom:0px; border-style: solid; border-width: 1px; border-color:#666666;}\n" +
    "\n" +
    "</style>\n";

    function Toolkit () {
    var TStyle = '';
    if (navigator.userAgent.match(/msie/i)) TStyle = new Array('Undo','Redo','separator','Cut','Copy','Paste','separator','separator','Bold','Italic','Underline','StrikeThrough','Superscript','Subscript','separator','JustifyLeft','JustifyCenter','JustifyRight','JustifyFull','separator','InsertOrderedList','InsertUnorderedList','Indent','Outdent','separator','CreateLink','InsertHorizontalRule','InsertTable','InsertImage','separator','ForeColor','BackColor','separator','separator','RemoveFormat');
    if (navigator.userAgent.match(/gecko/i)) TStyle = new Array('undo','redo','separator','cut','copy','paste','separator','separator','bold','italic','underline','strikethrough','superscript','subscript','separator','justifyleft','justifycenter','justifyright','justifyfull','separator','insertorderedlist','insertunorderedlist','indent','outdent','separator','createlink','inserthorizontalrule','inserttable','insertimage','separator','forecolor','backcolor','separator','separator','removeformat');
    var TImage = new Array('undo','redo','','cut','copy','paste','','','b','i','u','s','sup','sub','','l','c','r','j','','ol','ul','in','out','','a','hr','tab','img','','cfg','cbg','','','F');
    var TTitle = new Array('Отменить','Повторить','','Вырезать','Копировать','Вставить','','','Полужирный','Курсив','Подчеркнутый','Перечеркнутый','Степень','Индекс','','По левому краю','По центру','По правому краю','По ширине','','Нумерованный список','Маркированный список','Увеличить отступ','Уменьшить отступ','','Гиперссылка','Линия','Вставить таблицу','Вставить изображение','','Цвет шрифта','Цвет фона','','','Снять форматирование');

    var Toolkit = "<Table cellpadding=0 cellspacing=1 border=0><Tr>\n";

    for (i in TStyle) {
    if (TStyle != 'separator') Toolkit += "<Td><button class=tools width=20 height=20 onclick=\"setStyle('"+TStyle+"')\" onmouseover=\"style.background='#c0c0c0';style.borderColor='#666666';\" onmouseout=\"style.background='#dddddd';style.borderColor='#dddddd';\" title=\""+TTitle+"\"><img src=editor/pix/"+TImage+".gif></button></Td>\n";
    else Toolkit += "<Td width=1 bgcolor=#c0c0c0></Td>\n";
    }
    document.getElementById('tools').innerHTML = Toolkit+"</Tr></Table>";
    }
    Toolkit();

    function setStyle (TStyle) {
    if (TStyle.match(/inserttable/i)) {
    var Form = "<html>" +
    "<head>" +
    "<title>Вставка таблицы</title>" +
    PanelStyle +
    "</head>\n" +
    "<script language=Javascript>\n" +
    "function AddTbl() {\n" +
    "var nTable = '<TABLE width='+document.forms['tblf'].elements['width'].value+' height='+document.forms['tblf'].elements['height'].value+' cellpadding='+document.forms['tblf'].elements['padding'].value+' cellspacing='+document.forms['tblf'].elements['spacing'].value+' border='+document.forms['tblf'].elements['border'].value+' bgcolor=#'+document.forms['tblf'].elements['bgcolor'].value+'>';\n" +
    "for (r=0;r<document.forms['tblf'].elements['rows'].value;r++) {\n" +
    "nTable += '<tr>';\n" +
    "for (c=0;c<document.forms['tblf'].elements['cols'].value;c++) {\n" +
    "nTable += '<td></td>';\n" +
    "}\n" +
    "nTable += '</tr>';\n" +
    "}\n" +
    "nTable += '</TABLE>';\n" +
    "//window.opener.EditField.focus();\n" +
    "var Field = window.opener.EditFieldHeader+window.opener.EditField.body.innerHTML+nTable+window.opener.EditFieldFooter;\n" +
    "window.opener.EditField.open();\n" +
    "window.opener.EditField.write(Field);\n" +
    "window.opener.EditField.close();\n" +
    "window.close();\n" +
    "}</script>\n" +
    "<body topmargin=0 leftmargin=0>\n" +
    "<br><form id=tblf><table width=100%>" +
    "<tr><td>Ширина таблицы</td><td><input size=15 name=width value='100%'></td></tr>" +
    "<tr><td>Высота таблицы</td><td><input size=15 name=height value='200'></td></tr>" +
    "<tr><td>Количество столбцов</td><td><input size=15 name=cols value='5'></td></tr>" +
    "<tr><td>Количество строк</td><td><input size=15 name=rows value='2'></td></tr>" +
    "<tr><td>Ширина бордюра</td><td><input size=15 name=border value='1'></td></tr>" +
    "<tr><td>Отступ</td><td><input size=15 name=padding value='2'></td></tr>" +
    "<tr><td>Расстояние между ячейками</td><td><input size=15 name=spacing value='1'></td></tr>" +
    "<tr><td>Цвет фона</td><td><input size=15 name=bgcolor value='FFFFFF' maxlength=6></td></tr>" +
    "<tr><td colspan=2><input type=button value=Вставить style='width:100%' OnClick=\"AddTbl()\"></td></tr>" +
    "</table></form>\n" +
    "</body>" +
    "</html>";

    var TabPanel = window.open("","TabPanel","dependent=1,width=300,height=220,status=yes");
    TabPanel.document.open();
    TabPanel.document.write(Form);
    TabPanel.document.close();
    } else if (TStyle.match(/insertimage/i)) {
    var Form = "<html><head>" +
    PanelStyle +
    "<title>Загрузка изображения</title></head>" +
    "<body leftmargin=0 rightmargin=0 topmargin=0 bottommargin=0 marginwidth=0 marginheight=0>\n" +
    "<FORM action=\"saveimg.php\" method=\"POST\" enctype=\"multipart/form-data\" id=\"imgform\">" +
    "<input type=\"file\" name=\"img\" style=\"width:400\">" +
    "<input type=\"hidden\" name=\"id\" value=\"165\">" +
    "<br><input type=\"submit\" value=\"OK\" style=\"width:400\" onclick=\"window.opener.EditField.execCommand('insertimage',false,document.forms['imgform'].elements['img'].value);\">" +
    "</FORM>" +
    "\n</body><html>";

    ImgPanel = open('', 'ImgPanel', 'dependent=1,width=400,height=10,status=no,toolbar=no,menubar=no,location=no,resizable=yes');

    ImgPanel.document.open();
    ImgPanel.document.write(Form);
    ImgPanel.document.close();
    } else if (TStyle.match(/^createlink$/i)) {
    var Url = prompt('Введите адрес','http://');
    EditField.execCommand('CreateLink',false,Url);
    } else if (TStyle.match(/forecolor|backcolor/i)) {
    var Form = "<html><head>" +
    PanelStyle +
    "<title>Палитра</title></head>" +
    "<body leftmargin=0 rightmargin=0 topmargin=0 bottommargin=0 marginwidth=0 marginheight=0>\n<table width=\"360\" height=\"100\" cellpadding=\"0\" cellspacing=\"0\" border=\"0\"><tr><td height=\"40\">" +
    "<form name=clr>" +
    "&nbsp;<input type=text name=colr style=\"width:40;height:30\" readonly>&nbsp;" +
    "<input type=text name=colr_hex style=\"width:60\" value=#ffffff>" +
    "</form>" +
    "</td></tr><tr><td><table width=\"360\" height=\"60\" cellpadding=\"0\" cellspacing=\"0\" border=\"0\">\n";
    var i = 0;
    for(r=0; r<6; r++){
    for(g=0; g<6; g++){
    for(b=0; b<6; b++){
    if (i==0) Form += '<tr>\n';
    colr = i2hx(r)+i2hx(g)+i2hx(b);
    Form += "<td width=10 height=10 bgcolor=#"+colr+
    " onclick=\"window.opener.EditField.execCommand('"+TStyle+"',false,'#"+colr+"');window.close();\""+
    " onmouseover=\"document.forms['clr'].elements['colr'].style.background='#"+colr+"';document.forms['clr'].elements['colr_hex'].value='#"+colr+
    "'\"><img src=editor/pix/1x1.gif height=10 border=0></td>\n";
    i++;
    if (i==36) {
    Form += '</tr>';
    i=0;
    }
    }
    }
    }
    Form += '</table></td><tr><table>';
    Form += "\n</body><html>";

    ColorPanel = open('', 'ColorPanel', 'dependent=1,width=360,height=80,status=yes,toolbar=no,menubar=no,location=no,resizable=no');

    ColorPanel.document.open();
    ColorPanel.document.write(Form);
    ColorPanel.document.close();
    } else {
    EditField.execCommand(TStyle,false,null);
    }
    }

    function i2hx(i) {
    i*=51;
    if (i<16) return "0"+i.toString(16);
    else return i.toString(16);
    }

    function SetFace () {EditField.execCommand('fontname',false,document.getElementById('fface').value)}
    function SetSize () {EditField.execCommand('fontsize',false,document.getElementById('fsize').value)}


    function Save () {
    if (navigator.userAgent.match(/msie/i)) document.forms['EditForm'].elements['field'].value = EditFieldHeaderOut + EditField.body.outerHTML + EditFieldFooter;
    if (navigator.userAgent.match(/gecko/i)) document.forms['EditForm'].elements['field'].value = EditFieldHeaderOut + "<body bgcolor=" + EditField.bgColor + ">\n" + EditField.body.innerHTML + "\n</body>" + EditFieldFooter;
    //Saved = 1;
    document.forms['EditForm'].submit();
    }


    if (navigator.userAgent.match(/msie/i)) EditField = frames['EditFrame'].document;
    else if (navigator.userAgent.match(/gecko/i)) EditField = document.getElementById('EditFrame').contentDocument;
    else alert("ArthEdit is not supported by your browser");
    EditField.designMode = 'On';

    EditField.open();
    EditField.write(EditFieldHeader);
    EditField.write(Content);
    EditField.write(EditFieldFooter);
    EditField.close();

    EditField.execCommand('fontname',false,'Verdana');
    EditField.execCommand('fontsize',false,'2');[/js]
     
  8. Vitas

    Vitas Активный пользователь

    С нами с:
    7 фев 2006
    Сообщения:
    595
    Симпатии:
    0
    Адрес:
    Новосибирск, Академгородок
    Удали строку
    Код (Text):
    1. var Content = "";
    из файла editor.js.
    И сделай типа этого:

    Код (Text):
    1. <script type="text/javascript">
    2.     var Content = "<?php echo $row["news"] ?>";
    3. </script>
    Только уже в самом editnews.php.

    Типа такого:
    Код (Text):
    1. ...
    2.  
    3. <script type="text/javascript">
    4.     var Content = "<?php echo $row["news"] ?>";
    5. </script>
    6. <script src="editor/editor.js"></script>
    Идея ясна?
     
  9. xak2

    xak2 Guest

    Страница тагда не грузится, доходит до конца и идет загрузка и так до безконечности. А когда исходник смотриш все загружено до конца и текст из переменной в фрейме не появляется...
     
  10. armadillo

    armadillo Активный пользователь

    С нами с:
    6 апр 2007
    Сообщения:
    2.380
    Симпатии:
    0
    Адрес:
    Russia, Moscow
    в самом editnews.php напиши var Content = "";

    что в новостях?
     
  11. SEAr

    SEAr Активный пользователь

    С нами с:
    18 июл 2007
    Сообщения:
    21
    Симпатии:
    0
    Приветствую.

    Использую html-редактор, код которого предоставлен выше. Вопрос такой. При сохранении отредактированный html-код автоматически заключается между тэгами <BODY></BODY>. Мне они не нужны. Почему это происходит и что нужно поправить, чтобы этого не было?
     
  12. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    мб регулярками
    $text=preg_replace("#<body>(.*)<\/body>#iUs","\\1",$text);
     
  13. SEAr

    SEAr Активный пользователь

    С нами с:
    18 июл 2007
    Сообщения:
    21
    Симпатии:
    0
    Думаю, да. Спасибо. Больше вариантов не вижу.