Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Интернет » Web-программирование » вопросы по javascript

Модерирует : Cheery

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119

Открыть новую тему     Написать ответ в эту тему

Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
unreal666

Цитата:
и не перечисляет.

http://www.w3.org/TR/DOM-Level-2-Core/core.html#ID-745549614
Все же хотят брать Element
 

Код:
alert(typeof Element.prototype.getElementsByTagName)


----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 21:00 19-03-2013 | Исправлено: Cheery, 21:00 19-03-2013
unreal666



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Я уже исходники WebKit'а скачал, проиндексировал в проге "Архивариус 3000" и поискал там по слову getElementsByTagName. Наиболее похожее нашел в файле DOMCoreClasses.cpp.
Там такой код  

Код:
HRESULT STDMETHODCALLTYPE DOMDocument::getElementsByTagName(  
    /* [in] */ BSTR tagName,
    /* [retval][out] */ IDOMNodeList** result)
{
    if (!m_document)
        return E_FAIL;
 
    String tagNameString(tagName);
    *result = DOMNodeList::createInstance(m_document->getElementsByTagName(tagNameString).get());
    return *result ? S_OK : E_FAIL;
}
...
HRESULT STDMETHODCALLTYPE DOMElement::getElementsByTagName(  
        /* [in] */ BSTR /*name*/,
        /* [retval][out] */ IDOMNodeList** /*result*/)
{
    ASSERT_NOT_REACHED();
    return E_NOTIMPL;
}

т.е. getElementsByTagName присутствует в прототипах и Element и Document.
Т.е. также, как указано в указанном тобой DOM-Level-2-Core. Т.е. надо будет его получше почитать и составить для себя таблицу.

Всего записей: 6672 | Зарегистр. 14-02-2005 | Отправлено: 21:46 19-03-2013
unreal666



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Маленький затык.
Есть код  

Код:
var str = 'какой-то текст';
var a = document.createElement('a');
a.href = '#';
var span = document.createElement('span');
span.className = 'tip';
span.innerHTML = str;
td.appendChild(a.appendChild(span));

td - это узел ячейки таблицы.
 
Проблема в том, что почему-то не вставляется тег <a>, т.е. получается просто  

Код:
<td>текст<span class="tip">какой-то текст</span></td>

А вот если делать просто  

Код:
td.appendChild(a);

то <a href="#"></a> появляется.
 
В чем проблема?

Всего записей: 6672 | Зарегистр. 14-02-2005 | Отправлено: 10:20 20-03-2013 | Исправлено: unreal666, 10:21 20-03-2013
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
unreal666

Цитата:
Проблема в том, что почему-то не вставляется тег <a>, т.е. получается просто

потому что appendChild возвращает указатель на вставленный элемент

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 10:28 20-03-2013
unreal666



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
понял.
Т.е. надо вместо  

Код:
td.appendChild(a.appendChild(span));

сделать так

Код:
a.appendChild(span);
td.appendChild(a);

сенкс

Всего записей: 6672 | Зарегистр. 14-02-2005 | Отправлено: 10:37 20-03-2013
unreal666



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
В заголовке <head> страницы есть такое:

Код:
<head>
    <script>
    var __$$$={};
    __$$$.css='wiki';
    (function(window){
        var __$$$ = window.__$$$, document = window.document;
        var l = window.location, pn = l.pathname, pt = l.protocol;
        __$$$.root = '/share/outwiker/', __$$$.head=document.head;
        __$$$.root = pt == 'file : '? pt + '//localhost' + (pn.charAt(2) == ':' ? pn.slice(0,3) : '') + __$$$.root : __$$$.root;
        __$$$.stylefolder = __$$$.root + 'styles/' + __$$$.css;
        __$$$.head.innerHTML = __$$$.head.innerHTML + '<link rel="stylesheet" type="text/css" href="' + __$$$.stylefolder + '/style.css">';
        __$$$.head.innerHTML = __$$$.head.innerHTML+'<script type="text/javascript" src="'+__$$$.root+'libs/engine.js">';
    })(window);
    </script>
</head>

Код должен генерировать (что он и делает) дополнительный тег <script> (тег <link> генерится для теста).
Судя по отладчику этот тег в DOM-дереве создается, но почему-то не обрабатывается. Не срабатывает alert('OK') в нем + в отладчике никакой инфы нет, что он вообще пытался его грузить.

Всего записей: 6672 | Зарегистр. 14-02-2005 | Отправлено: 19:22 25-03-2013 | Исправлено: unreal666, 21:02 25-03-2013
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
unreal666
потому что это не работает для подключения js скриптов.. попробуйте через  
document.write, а вообще надо (как подключается клава на борде)

Цитата:
var script = document.createElement('script')  
script.type = 'text/javascript'
script.language='javascript'
script.src = '/script.js'  
document.getElementsByTagName('head')[0].appendChild(script)


----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 21:37 25-03-2013
unreal666



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
потому что это не работает для подключения js скриптов

а чего такая дискриминация?

Цитата:
попробуйте через  
 document.write, а вообще надо (как подключается клава на борде)

да я об этом думал с самого начал. Просто хотел минимизировать код, т.к. эта страница является шаблоном-стилем для генерации других страниц. Вот и хотел, чтобы в этом шаблоне было меньше данных
 
Я у себя уже сделал так  

Код:
        script = document.createElement('script');
        script.src = __$$$.root + 'libs/engine.js';
        script.type='text/javascript';
        __$$$.head.appendChild(script);

только проверить еще до этого не успел.
Работает.

Всего записей: 6672 | Зарегистр. 14-02-2005 | Отправлено: 21:40 25-03-2013 | Исправлено: unreal666, 21:44 25-03-2013
unreal666



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Есть код  

Код:
(function(window){
    var Node = window.Node,
        obj = ( Node && Node.prototype || window.document );
    if (!obj.insertAfter) {
        obj.insertAfter = function( newChild, refChild ) {
            if ( refChild.parentNode ) {
                refChild.parentNode.insertBefore( newChild, refChild.nextSibling );
            }
        }
    }
})(window)
 
(function(window){
    var ___gl = window.___gl,
        document = window.document,
        linkCss, insert;
    linkCss      = document.createElement('link');
    linkCss.rel  = 'stylesheet';
    linkCss.type = 'text/css';
    linkCss.href = ___gl.root + 'styles/' + ___gl.pageStyle + '/style.css';
    if (___gl.script) {
        document.insertAfter(linkCss, ___gl.script);
    } else if (document.getElementById && document.getElementById('script0')) {
        document.insertAfter(linkCss, document.getElementById('script0'));
    } else if (document.getElementsByTagName) {
        document.insertAfter(linkCss, document.getElementsByTagName('script')[0]);
    }
})(window)

IE 9/10 выдают ошибку на входе 1-ой функции "SCRIPT5007: Предполагается наличие объекта".
Firefox  выдает ошибку на входе 2-ой функции "TypeError: (intermediate value)(...) is not a function".
Opera, как и IE, выдает ошибку на 1-ой фунции "Uncaught exception: TypeError: '})(window)' is not a function".
 
В чем тут проблема?
 
ЗЫ.
Если закомментировать любую из ф-й  или блок  

Код:
})(window)
 
(function(window){

посередине кода, то ошибка не вылазит.

Всего записей: 6672 | Зарегистр. 14-02-2005 | Отправлено: 19:17 27-03-2013 | Исправлено: unreal666, 19:28 27-03-2013
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
unreal666

Цитата:
})(window)  
 
(function(window){

точку с запятой поставить

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 20:58 27-03-2013
unreal666



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
блин
Еще не сталкивался, чтобы точка с запятой была обязательной, если последующий код на другой строке.
Надо будет тогда на всякий случай всегда их ставить

Всего записей: 6672 | Зарегистр. 14-02-2005 | Отправлено: 21:08 27-03-2013
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
unreal666
я всегда уже ставлю точку с запятой - так и код читается лучше.

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 21:12 27-03-2013
unreal666



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Кстати. В IE ниже 9 нет объекта Node (да и многих других). Как тогда ко всем узлам сразу цеплять нужные метод/ свойства?

Всего записей: 6672 | Зарегистр. 14-02-2005 | Отправлено: 21:28 27-03-2013
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
unreal666

Цитата:
В IE ниже 9 нет объекта Node (да и многих других).


Цитата:
At the time of this writing, no browser is completely conformant to the DOM standard. Recent releases of Mozilla come closest, and complete DOM Level 2 conformance is a goal of the Mozilla project. Netscape 6.1 does a good job of conforming to the most important Level 2 modules, and Netscape 6.0 does an adequate job but has gaps in its coverage. Internet Explorer 6 is mostly compliant (with at least one annoying exception) with the Level 1 DOM, but does not support many of the Level 2 modules -- most notably the Events module, which is the topic of Chapter 19. Internet Explorer 5 and 5.5 have substantial gaps in their conformance but support key DOM Level 1 methods well enough to run most of the examples in this chapter. The Macintosh version of IE 5 has considerably better support for the DOM than the Windows version of IE 5.

 
http://www.w3.org/TR/REC-DOM-Level-1/level-one-core.html#ID-1950641247
 
функции для работы есть, а самого объекта нет?
http://www.w3schools.com/dom/dom_node.asp

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 21:37 27-03-2013 | Исправлено: Cheery, 21:37 27-03-2013
unreal666



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Код:
alert('Node' in window) // false
alert(typeof Node)       // undefined

 
так по крайней мере в IE10, включенном в режимах IE 8 и 7.

Всего записей: 6672 | Зарегистр. 14-02-2005 | Отправлено: 22:21 27-03-2013 | Исправлено: unreal666, 22:22 27-03-2013
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
unreal666
http://stackoverflow.com/questions/597268/element-prototype-in-ie7

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 22:52 27-03-2013
unreal666



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
посмотрел. Потестил:

Код:
var ttt = '';
___Element = function(){};
for (var prop in ___Element.prototype) {
    ttt = ttt + prop + 'test' + '\r\n';
}
alert(ttt);  // пусто

 
?

Всего записей: 6672 | Зарегистр. 14-02-2005 | Отправлено: 23:22 27-03-2013 | Исправлено: unreal666, 23:22 27-03-2013
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
unreal666
я не понимаю зачем вам это вообще надо..  
по ссылке пример как создать свой интерфейс
там же ссылка на http://msdn.microsoft.com/en-us/library/dd282900%28VS.85%29.aspx

Цитата:
Internet Explorer 8 reveals a DOM prototype hierarchy that is dramatically simpler than the arrangement shown above; primarily because Internet Explorer's object model predates the standardization of the DOM hierarchy as shown. We opted to present the object model to Web developers as-is rather than put up a veneer that gives the appearance of conforming to the DOM hierarchy exactly. This way, we can better articulate and prepare Web developers for future standards-compliance changes to the DOM. The following figure illustrates the unique DOM prototype hierarchy of Internet Explorer 8 using only the interface objects included in the previous illustration. Again, this represents only a fraction of the interface objects supported by Internet Explorer 8:

   

Цитата:
Note that the common ancestor "Node" is missing. Also note how comments "inherit" from Element (this makes sense when you consider that Internet Explorer still supports the deprecated "<comment>" element).


----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 23:26 27-03-2013
unreal666



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
я не понимаю зачем вам это вообще надо..  

у себя кое-что химичу с шаблона страниц, использующихся в проге, использующей у себя движок IE.
По умолчанию этот движок IE в проге работает в режиме IE 7, если в шаблон принудительно не воткнуть тег
"<meta http-equiv="X-UA-Compatible" content="IE=edge" />".

Цитата:
по ссылке пример как создать свой интерфейс

не увидел там ссылку глазами (слишком блеклая). Только через исходник страницы нашел.
 
Короче. Фиг с этими IE < 9.

Всего записей: 6672 | Зарегистр. 14-02-2005 | Отправлено: 23:56 27-03-2013 | Исправлено: unreal666, 23:57 27-03-2013
vs6262



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
такой вопрос: можно ли с помощью JavaScript вычислять время нажатия кнопки (input-button) так чтобы к примеру после удержаниия в 3 сек вызывылась какаято функция ?

Всего записей: 2235 | Зарегистр. 25-02-2013 | Отправлено: 01:03 07-04-2013
Открыть новую тему     Написать ответ в эту тему

Страницы: 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 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119

Компьютерный форум Ru.Board » Интернет » Web-программирование » вопросы по javascript


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru