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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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 120 121 122 123 124 125

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

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. Т.е. надо будет его получше почитать и составить для себя таблицу.

Всего записей: 6678 | Зарегистр. 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> появляется.
 
В чем проблема?

Всего записей: 6678 | Зарегистр. 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);

сенкс

Всего записей: 6678 | Зарегистр. 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') в нем + в отладчике никакой инфы нет, что он вообще пытался его грузить.

Всего записей: 6678 | Зарегистр. 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);

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

Всего записей: 6678 | Зарегистр. 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){

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

Всего записей: 6678 | Зарегистр. 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
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
блин
Еще не сталкивался, чтобы точка с запятой была обязательной, если последующий код на другой строке.
Надо будет тогда на всякий случай всегда их ставить

Всего записей: 6678 | Зарегистр. 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 (да и многих других). Как тогда ко всем узлам сразу цеплять нужные метод/ свойства?

Всего записей: 6678 | Зарегистр. 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.

Всего записей: 6678 | Зарегистр. 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);  // пусто

 
?

Всего записей: 6678 | Зарегистр. 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.

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



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

Всего записей: 2240 | Зарегистр. 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 120 121 122 123 124 125

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


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

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

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru