Paste как в WYSIWYG

Тема в разделе "PHP", создана пользователем sw04, 26 авг 2008.

Статус темы:
Закрыта.
Модераторы: latteo
  1. sw04

    sw04 seoplayer

    Регистр.:
    1 дек 2007
    Сообщения:
    601
    Симпатии:
    193
    Есть html страница, которая формируется вызовом js скрипта.
    Мне нужен код, который формируется в результате.
    Временное решение нашел как копировать то, что получилось, вставлять в висивиг и оттуда уже забирать код.
    Но как упростить задачу?
    Неужели придется только через висивиг :confused:
     
  2. Drimean

    Drimean _

    Регистр.:
    25 мар 2006
    Сообщения:
    559
    Симпатии:
    75
    Т.е. как понял, нужно каким-то обрпазом посмотреть код, какой имеет страница ПОСЛЕ работы JS скрипта?
    Если так, то можно использовать плагин к firefox, называется firebug, а какое отношение тема к php имеет - не понятно...
     
  3. Black#FFFFFF

    Black#FFFFFF

    Регистр.:
    19 июл 2007
    Сообщения:
    174
    Симпатии:
    107
    Так. Здесь тебе поможет js.
    Ну давай подумаем:
    Итак - мы можем обратиться к стандарту "де-факто", который поддерживают все известные браузеры, для получения кода страницы - после ее генерации с помощью js (свойству innerHTML:(
    HTML:
    
    <script type="text/javascript">
    //<!--
     alert(window.document.documentElement.innerHTML); //здесь содержится почти весь код страницы
     var code = window.document.documentElement.innerHTML;
    // code теперь содержит все содержимое страницы
    //-->
    </script>
    
    Это "почти все". Не будет хватать только вот таких вот дескрипторов:

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

    , которые не входят в корневой узел <html>, ну и придется ковырнуть на наличие свойств еще и сам тег <html>, чтобы не потерять их, т.е. не было ли там чего нибудь такого:
    <html xmlns="http://www.w3.org/1999/xhtml">
    Но это уже мелочи.
     
    sw04 нравится это.
  4. sw04

    sw04 seoplayer

    Регистр.:
    1 дек 2007
    Сообщения:
    601
    Симпатии:
    193
    Drimean, вытаскивать приходится сотни рисунков =)
    Black#FFFFFF, подскажи, пожалуйста как передать эти данные php?
    пробовал через куки, но видимо не так делаю =)
    В js мои познания минимальны.
     
  5. Black#FFFFFF

    Black#FFFFFF

    Регистр.:
    19 июл 2007
    Сообщения:
    174
    Симпатии:
    107
    Ну давай подумаем. а) гет запрос не выход б) возможно нам поможет ajax, для примера давай возьмем библиотеку Дмитрия Котерова jsHTTPRequest или любую другую, которая тебе нравится. Итак, немного доработаем скрипт:
    Клиентская часть (читай комментарии) - frontend.php:
    HTML:
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    
    <html xmlns="http://www.w3.org/1999/xhtml">
    
    <head>
      <title></title>
    </head>
    
    <body>
    <!-- Здесь идет твой яваскрипт код, генерирующий страницу, строго после него! вне его родительского
    элемента пишем нужный нам код для отправки готовой страницы к файлу пхп -->
    <!--Подключаем саму библиотеку ее файл  JsHttpRequest.js указываем путь к ней на сервере-->
    <script type="text/javascript" src="../../lib/JsHttpRequest/JsHttpRequest.js"></script>
    <script type="text/javascript">
    //<!--
    /*
     addEvent - Эта функция нужна нам, чтобы вызвать код, который получит
     содержимое страницы и отправит его на сервер тогда и только тогда,
     когда будет загружена и сгенерирована вся страница, а не на этапе
     ее генерации  (that's fucking explorer:))
     Принимает:
                @_obj - объект привязки события - объект: пример window
                @_ev  - название события, текст, например: "load"
                @_funct - имя функции, сопоставляемой событию: например myfunct
     Возвращает: void(0)
    */
    function addEvent(_obj, _ev, _funct){
    
                try{
                   _obj.addEventListener(_ev,_funct,false);
                } catch(ex){
                    _ev = 'on'+_ev;
                    _obj.attachEvent(_ev,_funct);
                }
    
            }
    /*
     toServer - Эта функция нужна нам, чтобы получить нужные данные и сформировать
     запрос на сервер
     Принимает:  void(0)
     Возвращает: void(0)
    */
    
    function toServer(){
        window.pCode = window.document.documentElement.innerHTML;
        // window.pCode теперь содержит все содержимое страницы, переменная глобальная
        //если ее придется использовать и далее, вне функции
        //на самом деле можно сделать пре фильтрацию данныых до отправки, на будущее тебе по изучению яваскрипта:)
        JsHttpRequest.query(
                'backend.php', // backend php script name
                {
                    'pCode': window.pCode
                },
                // Function is called when an answer arrives.
                function(result, errors) {
                    // Write errors to the debug div.
                    document.getElementById("debug").innerHTML = errors;
                    // Write the answer.
                    if (result&&result.str.length) {
                        alert(result.str); //убираем этот код и пишем нужный для обработки результатов, присланных с сервера
                    }
                },
                false  // do not disable caching
            );
        }
    
    addEvent(window,'load',toServer); //вызываем функцию в момент полного формирования страницы
    
    //-->
    </script>
    <div id="debug">
    <!-- А здесь выведем ошибки при передаче данных на сервер-->
    </div>
    </body>
    
    </html>
    
    Серверная часть (backend.php:(
    PHP:
    <?php 
    /* подключаем файл библиотеки (указываем местоположение на сервере) 
    и инициализируем ее в виде объекта
    */
    $charset                "windows-1251"//указываем кодировку (если отлична от utf-8)
    require "../../lib/JsHttpRequest/JsHttpRequest.php"
    // Init JsHttpRequest and specify the encoding. It's important!
    $JsHttpRequest             =& new JsHttpRequest($charset);
    $pCode                     '';
    /*утилизация ненужного кода и проверка 
    корректности данных перед помещением
    в файл или базу данных на твоей совести!)
    я только обрежу ненужные символы 
    пустого пространства*/
    $pCode                     trim($_REQUEST['pCode']); 
    if(!isset(
    $_REQUEST['pCode'])||empty($pCode)){
            unset(
    $charset,$pCode); //немного пребрались за собой
        
    echo('Ошибка передачи'); /*
        в том случае если ниего не было передано мы печатаем сообщение, которое
        будет перехвачено библиотекой и отправлено во фронтенде в ошибки
        читай доки по библиотеке*/
        
    exit;
    }
    /* действия над полученным нами кодом страницы
     и пример как передать данные из файла пхп обратно файлу клиента*/
    $str 'Передача данных произошла успешно';
    $GLOBALS['_RESULT']     = array(
          
    "str"               => $str
        
    );
        unset(
    $charset,$pCode,$str); //немного пребрались за собой

    ?>
    Все писалось "с коленки" - но ошибки вряд ли есть. Но ежели чего не так - стучись. И почитай плиз документацию к библиотеке по приведенной вверху ссылке.
     
    sw04 нравится это.
Статус темы:
Закрыта.