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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> тег OBJECT, его свойства и методы. Определение свойств объекта OBJECT в js 
:(
    Опции темы
t77
  Дата 19.12.2011, 11:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Доброе время суток.
При отладке кода, наткнулся на следующее:
На страничке имеется тег OBJECT
Код

<BODY onload="parent.loadParams()">
    <OBJECT id="camreaObj" name="cameraObj" classid="clsid:912FB007-DD9A-11D3-BD8D-DAAFCB8D9378">
    </OBJECT>    
</BODY>

Как видно, при загрузке страницы, запускается функция loadParams(), которая в свою очередь задает определенные свойства объекту camreaObj.
Код

function loadParams()
{                            
    try
    {                                                                                            
            document.all.cameraIFrame.contentWindow.document.all.cameraObj.Connected = true;
            document.all.cameraIFrame.contentWindow.document.all.cameraObj.VideoDeviceIndex = 1;
            document.all.cameraIFrame.contentWindow.document.all.cameraObj.CaptureRate = 24;
            document.all.cameraIFrame.contentWindow.document.all.cameraObj.ColorFormat = 0;
            document.all.cameraIFrame.contentWindow.document.all.cameraObj.Preview = false;
            document.all.cameraIFrame.contentWindow.document.all.cameraObj.VideoInputIndex = 1;                                    
            document.all.cameraIFrame.contentWindow.document.all.cameraObj.setVideoFormat(640,480);
            document.all.cameraIFrame.contentWindow.document.all.cameraObj.VideoCodecQuality = 100;
            document.all.cameraIFrame.contentWindow.document.all.cameraObj.style.width = document.all.cameraIFrame.contentWindow.document.all.cameraObj.VideoWidth;
            document.all.cameraIFrame.contentWindow.document.all.cameraObj.style.height = document.all.cameraIFrame.contentWindow.document.all.cameraObj.VideoHeight;
                                
    }
    catch(e){
    }
}

Основная проблема заключается в том, что на строке:
Код

document.all.cameraIFrame.contentWindow.document.all.cameraObj.setVideoFormat(640,480);

Вылетает сообщение с ошибкой(javascript), что метод setVideoFormat не определен или не существует!
Для устранение этой проблемы сделал следующее:
Код

function loadParams()
                        {                            
                            try
                            {                                                            
                                if(typeof(document.all.cameraIFrame.contentWindow.document.all.cameraObj.VideoInputIndex) != "undefined"){
                                    document.all.cameraIFrame.contentWindow.document.all.cameraObj.Connected = true;
                                    document.all.cameraIFrame.contentWindow.document.all.cameraObj.VideoDeviceIndex = 1;
                                    document.all.cameraIFrame.contentWindow.document.all.cameraObj.CaptureRate = 24;
                                    document.all.cameraIFrame.contentWindow.document.all.cameraObj.ColorFormat = 0;
                                    document.all.cameraIFrame.contentWindow.document.all.cameraObj.Preview = false;
                                    document.all.cameraIFrame.contentWindow.document.all.cameraObj.VideoInputIndex = 1;                                    
                                    document.all.cameraIFrame.contentWindow.document.all.cameraObj.setVideoFormat(640,480);
                                    document.all.cameraIFrame.contentWindow.document.all.cameraObj.VideoCodecQuality = 100;
                                    document.all.cameraIFrame.contentWindow.document.all.cameraObj.style.width = document.all.cameraIFrame.contentWindow.document.all.cameraObj.width; //document.all.cameraIFrame.contentWindow.document.all.cameraObj.VideoWidth;
                                    document.all.cameraIFrame.contentWindow.document.all.cameraObj.style.height = document.all.cameraIFrame.contentWindow.document.all.cameraObj.height;//document.all.cameraIFrame.contentWindow.document.all.cameraObj.VideoHeight;
                                }
                                else{
                                    document.all.cameraIFrame.contentWindow.document.all.cameraObj.VideoDeviceIndex = 0;
                                }                                
                            }
                            catch(e){
                            }
                        }


По поводу вышеприведенного кода имеются несколько вопросов:
1. Если условие
Код

if(typeof(document.all.cameraIFrame.contentWindow.document.all.cameraObj.VideoInputIndex) != "undefined")

, верно! То есть, свойство VideoInputIndex не известно и не определено... Каким, тогда образом, у меня получается задать значение данному свойству ?
Код

else{                                    document.all.cameraIFrame.contentWindow.document.all.cameraObj.VideoDeviceIndex = 0;
}


2. Все вышеприведенные свойства и методы объекта cameraObj, нигде не определены в коде. Получается, что это известные свойства и методы объекта "OBJECT" ?? Почему, тогда гугль о них ничего не знает?? 

3. Не смотря на то, что после добавления в функции, условий if и else, ошибки больше нет и код работает... Что то мне не очень нравиться данное решение... 
Вопрос, можно ли решить данную проблему более красиво и правильно ?

Спасибо.        


PM MAIL   Вверх
magelan
Дата 22.12.2011, 11:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


потерял xPath
**


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

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



1. js пофиг определено значение или нет, у вас такой код получается:
var o = {};
o.o.o.o.o = 1;
alert( o.o.o.o.o );
а он вполне рабочий.

2. js пофиг есть эти методы у объекта или нет, вы вольны дернуть любой метод с любым именем, сценарий либо найдет его и исполнит, либо обругается.

3. нет.

и еще, то, что вы не понимаете это объект - clsid:912FB007-DD9A-11D3-BD8D-DAAFCB8D9378, который вероятно описан в доке на камеру, которую вы пытаетесь заюзать.
тег <object> будет нормально работать только в MSIE, т.к. это их формат подключения объектов системы.
Отсюда вероятные причины того, что объект неопределен - вы используете не мелкософтовский браузер, у вас не установленны драйвера на камеру.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




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


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

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