![]() |
|
Модераторы: Sardar, Aliance |
![]()
|
|
| zmxncb |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 6.3.2010 Репутация: нет Всего: нет |
Привет всем !
Хотел организовать трансляцию веб-камеры на сайте (http://server.ru/web/image.jpg). Для этого нашел модуль обновления картинки без обновления страницы, но проблема в том, что нужно проверить наличие этой картинки перед обновлением (бывает при ее обновлении, ее нет на сервере и тогда выдается пустота). Проверка должна быть как я понимаю в файле в конце. Но как правильно написать, не знаю.... Может кто помочь ? Заранее спасибо файл "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=''; } } } __________________________________________________________________________________ |
|||
|
||||
| bars80080 |
|
|||
![]() прапор творюет ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 12022 Регистрация: 5.12.2007 Где: Königsberg Репутация: 44 Всего: 315 |
ты знаешь, что у тебя в коде написан php?
|
|||
|
||||
| zmxncb |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 6.3.2010 Репутация: нет Всего: нет |
код второгофайла php я вложил чтобы было видно откуда вызывается скрипт java
условие существования файла по ссылке д/б как я понимаю в первом файле и выглядеть типа того: refresh: function() { if (файл "http://server.ru/web/image.jpg" существует) { $(this.options.imageid).src=this.options.imagesrc+'?'+$time(); } } а как правильно создать такое условие не знаю :(( |
|||
|
||||
| bars80080 |
|
|||
![]() прапор творюет ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 12022 Регистрация: 5.12.2007 Где: Königsberg Репутация: 44 Всего: 315 |
может быть, устроить загрузку и проверочную функцию на onload картинки. в проверке выяснить размеры, если вернёт 0, значит не картинка, тогда скрыть или не показывать её
|
|||
|
||||
| zmxncb |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 6.3.2010 Репутация: нет Всего: нет |
а как это должно выглядеть в коде ? по-моему это все-таки маленько не то. картинка обновляется например 1 раз в секунду, и надо выставить проверку на существование картинки перед выводом (в исходном коде проверки нет и изображение с web-камеры получается с разрывом(пустой экран), т.к. периодически картинки на сервере нет, т.к. она не успела появиться в ходе скидывания изображения с камеры программой) |
|||
|
||||
| mxt |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 133 Регистрация: 6.9.2007 Репутация: 1 Всего: 1 |
что должно показываться если нету картинки?
--------------------
|
|||
|
||||
| zmxncb |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 6.3.2010 Репутация: нет Всего: нет |
Если нет картинки, функция обновления не должна срабатывать, т.е. должна остаться на экране предыдущая картинка. |
|||
|
||||
| mxt |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 133 Регистрация: 6.9.2007 Репутация: 1 Всего: 1 |
тогда так: 2 картинки, 1 видно другую не видно. и просто в них по очередно менять src. и если картинка загрузилась, то её показывать, а другую скрывать. потом в ней менять src
--------------------
|
|||
|
||||
| zmxncb |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 6.3.2010 Репутация: нет Всего: нет |
Только бы еще узнать как это реализовать. Я пока что чайник в javascript |
|||
|
||||
| mxt |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 133 Регистрация: 6.9.2007 Репутация: 1 Всего: 1 |
ставишь картинкам отлова события load (onload).
а затем меняй свойство src у той картинки что скрыта (в начале они обе будут скрыты) и по событию load смотришь: загрузилась ли картинка: если да, то показываем её, перед этим спрятав старую. затем ставим таймер на 1 секунду, который сменит src у другой картинки. если нет, то ставишь таймер на 1 секунду, который сменит src у картинки которая не загрузилась. и так по кругу. --------------------
|
|||
|
||||
| zmxncb |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 6.3.2010 Репутация: нет Всего: нет |
Спасибо! Буду пробовать
|
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | JavaScript: для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |