Пошаговый вывод скрипта для IE всех версий.
Здравствуйте!
Помогоите, пожалуйста, разобраться в скрипте меню "Dtree". При выводе через него на страницу большого меню (около 2000 пунктов) IE всех версий ругаются, что скрипт на данной странице может вызвать зависание браузера и спрашивает продолжить выполнение или нет. Если нажать продолжить - скрипт работает, но нужно сделать чтоб это предупреждение не показывалось. Думаю сделать пошаговый вывод меню, но очень плаваю в javascript :( Помогите, пожалуйста... Если не ошибаюсь, то формирование происходит именно здесь. Как бы поставить сюда задержку или вывод не сразу, а с интервалом маленьким частями? // Outputs the tree to the page dTree.prototype.toString = function() { var str = '<div class="dtree">\n'; if (document.getElementById) { if (this.config.useCookies) this.selectedNode = this.getSelected(); str += this.addNode(this.root); } else str += 'Browser not supported.'; str += '</div>'; if (!this.selectedFound) this.selectedNode = null; this.completed = true; return str; }; // Creates the tree structure dTree.prototype.addNode = function(pNode) { var str = ''; var n=0; if (this.config.inOrder) n = pNode._ai; for (n; n<this.aNodes.length; n++) { if (this.aNodes[n].pid == pNode.id) { var cn = this.aNodes[n]; cn._p = pNode; cn._ai = n; this.setCS(cn); if (!cn.target && this.config.target) cn.target = this.config.target; if (cn._hc && !cn._io && this.config.useCookies) cn._io = this.isOpen(cn.id); if (!this.config.folderLinks && cn._hc) cn.url = null; if (this.config.useSelection && cn.id == this.selectedNode && !this.selectedFound) { cn._is = true; this.selectedNode = n; this.selectedFound = true; } str += this.node(cn, n); if (cn._ls) break; } } return str; }; |
в JS нету функции задержки, хотя имеется эмуляция ее, вызывающая 100% загрузку процессора, что в данном случае явно не подходит
судя по всему ваш скрипт оперирует строками, из которых он и "собирает меню" я не вижу способа сделать его асинхронным, для распределения нагрузки по времени Но, подозреваю, что это и не помогло бы, потому что скорее всего осел ругается не из-за того что скрипт ест много ЦПУ, а наверно из-за того что формирует очень длинную строку так как скрипт формирует строку, котору потом видиво выводит в браузер(по-крайней мере так выглядит из этого скрипта), то можно было бы попытатся выводить ноды верхнего уровня по-отдельности без остального сркипта, и образца его применения, трудно сказать, можно ли что-то сделать, но в любом случае, это уже не помощь, а работа |
А нельзя ли сделать скрипт, который бы нажимал автоматом кнопку "нет" при предложении IE остановить выполнение скрипта (окно появляется несколько раз)? Если можно, то какая цена его? Пример этой "беды" здесь: http://www.plus38.info/index.php?opt...New&Itemid =2
|
Цитата:
|
А зачем вы грузите дерево полностью?
лучше было бы грузить дерево только по тем частям, которые выбрал пользователь или генерировать дерево на стороне сервера |
А нет ли безотказного сценария (примера), по которому можно заставить скрипт исполнять не в браузере, а на сервере?
|
только переписать генерацию дерева под ноль, чтобы оно генерировалось на серверном языке, анпример ПХП
|
Вы можете добавить в этот скрипт, чтоб он генерировал только часть дерева, а при открывании категории вторую часть собирал и т.д. как Вы описали выше. Сколько это стоит?
Скрипт по ссылке: http://plus38.info/components/com_so...dtree/dtree.js |
эта библиотека не предназначена для таких трюков, как выяснилось
как минимум надо дописать изрядно функционала в ней но лучше использовать какую-нибудь более современную библиотеку генерации дерева, расчитанную на такие трюки стоимость своего труда по доработке этой библиотеки я оцениваю в 100$ так много в первую очередь, из-за того что она не предназначена для таких трюков, и над этим придется изрядно покорпеть |
Жаль, но такой бюджет не выделят... Извините.
|
передо мной незачем извинятся
проблем-то у вас, а не у меня копайте в сторону других скриптов вывода дерева могу предолжить вам услуги по доработке своего скрипта дерева посмотреть его вы можете здесь у этого скрипта есть один большой минус для вас: он написан с применением jquery+ui,а значит к самому скрипту придется грузить еще и добрые пару сотен килобайт кода этих библиотек Доработка этого скрипта до нужного вам функционала, и прикрутка заместо вашего старого дерева - 50$ Ну, и помимо этого дерева есть еще куча разнообразных скриптов деревьев и некторые даже возможно со старта поддерживают необходимый функционал. только искать их надо Либо если вы разбираетесь в JS, можете сами постаратся сделать отправным пунктом для вас может послужить статья http://javascript.ru/ui/ajaxtree |
Часовой пояс GMT +3, время: 07:58. |