Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проверка на существование файла по URL 
:(
    Опции темы
zmxncb
Дата 6.3.2010, 23:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 6.3.2010

Репутация: нет
Всего: нет



Привет всем !
Хотел организовать трансляцию веб-камеры на сайте (http://server.ru/web/image.jpg). Для этого нашел модуль обновления картинки без обновления страницы, но проблема в том, что нужно проверить наличие этой картинки перед обновлением (бывает при ее обновлении, ее нет на сервере и тогда выдается пустота).
Проверка должна быть как я понимаю в файле в конце. Но как правильно написать, не знаю....
Может кто помочь ?
Заранее спасибо smile

файл "imagerefresh.js"
_____________________________________________________________________________
// Imagerefresh class (Based in mootools of course)
var imgrefresh = new Class({   
    Implements: [Options],
                    
    initialize: function(options){    
      this.options=options;
      this.options.imagesrc=$(this.options.imageid).src;  
      this.refresh.bind(this).periodical(this.options.countdown);                           
    },
    
    refresh: function() {        
       $(this.options.imageid).src=this.options.imagesrc+'?'+$time();        
    }
});
_______________________________________________________________________________


файл "imagerefresh.php"
_______________________________________________________________________________
<?php
/**
 * @license        GNU/GPL, see LICENSE.php
 * Joomla! is free software. This version may have been modified pursuant
 * to the GNU General Public License, and as distributed it includes or
 * is derivative of works licensed under the GNU General Public License or
 * other free or open source software licenses.
 * See COPYRIGHT.php for copyright notices and details.
 */

// Check to ensure this file is included in Joomla!
defined( '_JEXEC' ) or die( 'Restricted access' );

class plgContentImageRefresh extends JPlugin
{

    function plgContentImageRefresh( &$subject, $params )
    {

        parent::__construct( $subject, $params );
    }


    function onBeforeDisplayContent( &$article, &$params, $limitstart )
    {
        global $mainframe;
        
        $plugin =& JPluginHelper::getPlugin('content', 'imagerefresh');
        $pluginParams = new JParameter( $plugin->params );
        
        
                        
        $singleregex='/({imagerefresh\s*)(.*?)(})/i';
    $regex='/{imagerefresh\s*.*?}/i';
    
    $cnt=preg_match_all($regex, $article->text, $matches, PREG_OFFSET_CAPTURE | PREG_PATTERN_ORDER);
      
    if ($cnt>0) {
  
     // Add mootools          
      JHTML::_('behavior.mootools');
      
      // Add image class
      $doc =&JFactory::getDocument();
      $doc->addScript(JURI::base().'plugins/content/imagerefresh.js');
    }
    
    // Convert all plugins tags
    for($counter = 0; $counter < $cnt; $counter ++) {                                
          
      // Get default params
      $refreshtime = $pluginParams->get('refreshtime', 300000);
            
      $imagesin=$matches[0][$counter][0];
      
     preg_match($singleregex, $imagesin, $imageparsed);
     
     $fields = explode("|", $imageparsed[2]);
     
     // for each option
      foreach($fields as $value) {
            $values=explode("=",$value, 2);
            $values=str_replace("'", '', $values);
            $values=str_replace("'",'',$values);
    
            // We can add more options
        switch ($values[0]) {
            
             case 'refreshtime':  
                          $refreshtime=$values[1];
                          break;
                               
             case 'imagesrc': 
                          $imagesrc=$values[1];
                          break;
         case 'imageopt': 
                          $imageopt=$values[1];
                          break;
             
            }        
            }
            
            
      
      $imgid=mt_rand('1', '9999999');
      
          // Generate the refresh code
          $code.="<img id=\"img$imgid\" src=\"$imagesrc\" $imageopt />";
          
          $code.="
        <script language=\"Javascript\">
          var img$imgid;          
          window.addEvent('domready',function(){ img$imgid = new imgrefresh({ imageid: 'img$imgid', countdown: $refreshtime }); }); 
        </script>";
        
      
      $article->text = str_replace($imagesin,  $code, $article->text);
      
      $code='';
                                     
    }
    
                    
    }
    
}
__________________________________________________________________________________
PM MAIL   Вверх
bars80080
Дата 7.3.2010, 02:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 44
Всего: 315



ты знаешь, что у тебя в коде написан php?
PM MAIL WWW   Вверх
zmxncb
Дата 7.3.2010, 09:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 6.3.2010

Репутация: нет
Всего: нет



код второгофайла php я вложил чтобы было видно откуда вызывается скрипт java smile
условие существования файла по ссылке д/б как я понимаю в первом файле и выглядеть типа того:


refresh: function() {        
if (файл "http://server.ru/web/image.jpg" существует) {
       $(this.options.imageid).src=this.options.imagesrc+'?'+$time();        }
    }


а как правильно создать такое условие не знаю :((
PM MAIL   Вверх
bars80080
Дата 7.3.2010, 10:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 44
Всего: 315



может быть, устроить загрузку и проверочную функцию на onload картинки. в проверке выяснить размеры, если вернёт 0, значит не картинка, тогда скрыть или не показывать её
PM MAIL WWW   Вверх
zmxncb
Дата 7.3.2010, 10:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 6.3.2010

Репутация: нет
Всего: нет



Цитата(bars80080 @ 7.3.2010,  10:10)
может быть, устроить загрузку и проверочную функцию на onload картинки. в проверке выяснить размеры, если вернёт 0, значит не картинка, тогда скрыть или не показывать её

а как это должно выглядеть в коде ? smile
по-моему это все-таки маленько не то.
картинка обновляется например 1 раз в секунду, и надо выставить проверку на существование картинки перед выводом (в исходном коде проверки нет и изображение с web-камеры получается с разрывом(пустой экран), т.к. периодически картинки на сервере нет, т.к. она не успела появиться в ходе скидывания изображения с камеры программой)
PM MAIL   Вверх
mxt
Дата 7.3.2010, 21:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 133
Регистрация: 6.9.2007

Репутация: 1
Всего: 1



что должно показываться если нету картинки?
--------------------
PM MAIL   Вверх
zmxncb
Дата 8.3.2010, 07:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 6.3.2010

Репутация: нет
Всего: нет



Цитата(mxt @ 7.3.2010,  21:56)
что должно показываться если нету картинки?

Если нет картинки, функция обновления не должна срабатывать, т.е. должна остаться на экране предыдущая картинка.
PM MAIL   Вверх
mxt
Дата 8.3.2010, 10:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 133
Регистрация: 6.9.2007

Репутация: 1
Всего: 1



тогда так:  2 картинки, 1 видно другую не видно.  и просто в них по очередно менять src.  и если картинка загрузилась, то её показывать, а другую скрывать. потом в ней менять src
--------------------
PM MAIL   Вверх
zmxncb
Дата 8.3.2010, 13:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 6.3.2010

Репутация: нет
Всего: нет



Цитата(mxt @ 8.3.2010,  10:56)
тогда так:  2 картинки, 1 видно другую не видно.  и просто в них по очередно менять src.  и если картинка загрузилась, то её показывать, а другую скрывать. потом в ней менять src

Только бы еще узнать как это реализовать. Я пока что чайник в javascript  smile 
PM MAIL   Вверх
mxt
Дата 8.3.2010, 13:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 133
Регистрация: 6.9.2007

Репутация: 1
Всего: 1



ставишь картинкам отлова события load (onload). 
 а затем меняй свойство src у той картинки что скрыта (в начале они обе будут скрыты)
и по событию load смотришь: загрузилась ли картинка:
  если да, то показываем её, перед этим спрятав старую.  затем ставим таймер на 1 секунду, который сменит src у другой картинки.
 если нет, то ставишь таймер на 1 секунду, который сменит src у картинки которая не загрузилась.

 и так по  кругу.
--------------------
PM MAIL   Вверх
zmxncb
  Дата 9.3.2010, 07:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 6.3.2010

Репутация: нет
Всего: нет



Спасибо! Буду пробовать  smile 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0537 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.