Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Mozilla firefox / 11 сообщений из 11, страница 1 из 1
18.12.2008, 12:55
    #35722101
Большой Синий Кит
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Mozilla firefox
Да, я уверен, что этот вопрос уже обсуждался, но в faq ни поиском я его не нашел.. :(

Дело в том, что не срабатывает получение элемента путем document.getElementById, причем только в firefox

Вот весь код, но в принципе, в нем нет особой надобности:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
        "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
    <link rel='stylesheet' type='text/css' href="css/index.css">
    <title></title>
    <script type="text/javascript">
        var x= 0 ;
        var y= 0 ;
        var _move=false;
        var _xOffset= 0 ;
        var _yOffset= 0 ;

        var _xOffsetContent= 0 ;
        var _yOffsetContent= 0 ;
        var content;
        function go(component,method){
            alert(component.id);
            method();
        };
        function addListeners(component){
                component.attachEvent("onmousedown",onMouseDown);
                component.attachEvent("onmousemove",onMove);
                component.attachEvent("onmouseup",onMouseUp);

                document.attachEvent("onmouseup",onMouseUp);
        };

        function onMouseUp(e){
            _move=false;
            var object = event.srcElement;
            object.style.cursor="default";
        };

        function onMouseDown(e){
             var object=event.srcElement;
             object.style.cursor="move";
             var x=parseInt(event.clientX);
             var y=parseInt(event.clientY);

            _xOffset=parseInt(object.style.left)-x;
            _yOffset=parseInt(object.style.top) - y;

            _xOffsetContent=parseInt(content.style.left)-x;
            _yOffsetContent=parseInt(content.style.top) - y;
             _move=true;

        };


        function onMove(e){
            var object = event.srcElement;
            if(_move){
                x=e.clientX;
                y=e.clientY;
                move(object);
            }
            object.style.cursor="move";

        };

        function move(component){
            var x=parseInt(event.clientX);
            var y=parseInt(event.clientY);
            content.style.left=(_xOffsetContent+x)+'px';
            content.style.top=(_yOffsetContent+y)+'px';
            component.style.left=(_xOffset+x)+'px';
            component.style.top=(_yOffset+y)+'px';

        };

        window.onload=function(){
            addListeners(document.getElementById('moverid'));
            content=document.getElementById('content');
        };
        </script>
</head>
<body>



<div id="content" style="position:absolute;left:0;top:20px;width:100px;height:100px;background:red">
    <input type="button" id="b" value="Button" />
    </div>
<div id="moverid" style="position:absolute;width:100px;height:20px;background:blue;left:0;top:0">This is a text
        </div>

<!--<input type="button" style="position:absolute; z-index:2" onclick="addListeners(document.getElementById('moverid'));" /> -->

</body>
</html>



В функции
Код: plaintext
1.
2.
3.
4.
window.onload=function(){
addListeners(document.getElementById('moverid'));
content=document.getElementById('content');
};

document.getElementById('moverid') не срабатывает. Только под фаервоксом.. Я так понимаю, что тут какая-то тонкость касающаяся именно фаерфокса..
Подскажите, пожалуйста...
Уже сталкивался с этим, но решения пока не нашёл...

Заранее благодарен..


P.S.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
function getElById(elId)
{
if(document.getElementById)
{return document.getElementById(elId);}
else if(document.all)
{return document.all[elId];}
else {return null;}
}
Получать элемент с помощью такой функции тоже пробовал


P.P.S
И присваивать слушатели после события на другом элементе (типа при нажатии на кнопку) тоже пробовал - вместо на событие загрузки окна...
(
Код: plaintext
1.
addListeners(document.getElementById('moverid'));
content=document.getElementById('content');
)

Пробовал и так:
Код: plaintext
1.
2.
3.
4.
window.onload=function(){
            addListeners(mover_id);
            content=content_id;
        };



работает везде, кроме фаерфокса опять же. :)
Фаерфокс 3.0.3
...
Рейтинг: 0 / 0
18.12.2008, 13:13
    #35722161
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Mozilla firefox
Большой Синий Кит , сделай нормальный тестовый пример. Без всякого лишнего кода...
----------
Cache for Windows (x86-32) 2007.1.3 (Build 607) Wed Oct 17 2007 02:12:09 EDT
...
Рейтинг: 0 / 0
18.12.2008, 13:17
    #35722171
Ex_Soft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Mozilla firefox
1. А что говорит Mozilla FireFox -> Tools -> Error Console ? /me думает: Вы бы хоть, для приличия, проверяли, что таки возвращает document.getElementById.
2. Сдаецо мне дело не в document.getElementById, а
Большой Синий Кит
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
function addListeners(component){
	component.attachEvent("onmousedown",onMouseDown);
	component.attachEvent("onmousemove",onMove);
	component.attachEvent("onmouseup",onMouseUp);

	document.attachEvent("onmouseup",onMouseUp);
};

Event'ы прикручивать, IMHO, лучче так:
Код: plaintext
1.
2.
3.
4.
5.
6.
if("attachEvent" in document)
	document.attachEvent("onkeyup",OnKeyUp);
else if("addEventListener" in document)
	document.addEventListener("keyup",OnKeyUp,false);
else
	document.onkeyup=OnKeyUp;
_________________
"Helo, word!" - 17 errors 56 warnings
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
18.12.2008, 13:24
    #35722195
Ex_Soft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Mozilla firefox
P.S. сдесь еще посмотрите...
_________________
"Helo, word!" - 17 errors 56 warnings
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
18.12.2008, 13:40
    #35722250
Большой Синий Кит
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Mozilla firefox
Спасибо большое!

переделал вот так:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
   if("attachEvent" in component){
                component.attachEvent("onmousedown",onMouseDown);
                component.attachEvent("onmousemove",onMove);
                component.attachEvent("onmouseup",onMouseUp);

                //document.attachEvent("onmouseup",onMouseUp);

                }else if("addEventListener" in component){
                    component.addEventListener("onmousedown",onMouseDown,false);
                    component.addEventListener("onmousemove",onMove,false);
                    component.addEventListener("onmouseup",onMouseUp,false);

                    //document.addEventListener("onmouseup",onMouseUp,false);
                }else{
                    component.onmousedown = onMouseDown;
                    component.onmousemove = onMove;
                    component.onmouseup = onMouseUp;

                   // document.onmouseup = onMouseUp;
                }

В консоли ошибок:

Ошибка: Permission denied to call method Location.toString

Скажите, пожалуйста,то это значит и почему выскакивает? :)
...
Рейтинг: 0 / 0
18.12.2008, 13:50
    #35722288
Ex_Soft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Mozilla firefox
1. /me думает: Вам бы Фленагана...
2. Большой Синий Кит
component.addEventListener(" on mousedown",onMouseDown,false);

Ex_Soft
document.addEventListener("keyup",OnKeyUp,false);

3. Большой Синий Кит
В консоли ошибок:

Ошибка: Permission denied to call method Location.toString

Вы уверены, что это относится именно к этому куску? Кликните по ней - Вас, по идее, должно перебросить на Page Source в то место...
_________________
"Helo, word!" - 17 errors 56 warnings
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
18.12.2008, 14:07
    #35722340
Большой Синий Кит
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Mozilla firefox
:)

Event is not defined...


на строке:
var object = event.srcElement;


Предыдущая ошибка продолжает появляться, но не ссылается на серс пейдж...
...
Рейтинг: 0 / 0
18.12.2008, 14:09
    #35722346
Большой Синий Кит
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Mozilla firefox
А Фленагана куплю обязательно, спасибо!

В чем же может быть дело..
...
Рейтинг: 0 / 0
18.12.2008, 14:14
    #35722361
Ex_Soft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Mozilla firefox
Большой Синий Кит
Event is not defined

тынць

P.S. Вот Вам дрозофила
_________________
"Helo, word!" - 17 errors 56 warnings
...
Рейтинг: 0 / 0
18.12.2008, 14:56
    #35722517
Большой Синий Кит
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Mozilla firefox
Огромное Вам спасибо!

Еще надо добавить:

Код: plaintext
1.
var object = event.srcElement ? event.srcElement : event.target;
...
Рейтинг: 0 / 0
18.12.2008, 15:00
    #35722535
illion
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Mozilla firefox
Большой Синий Кит
Код: plaintext
1.
var object = event.srcElement ? event.srcElement : event.target;

это записывается как
Код: plaintext
var object = event.srcElement || event.target;
...
Рейтинг: 0 / 0
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Mozilla firefox / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]