Уважаемые знатоки, помогите начинающему веберу. Знал бы как - не беспокоил бы. Суть вот в чём: Уж очень приглянулась мне одна функция ВК на JS. Функция называется showBox() Ниже приведён фрагмент кода, взятого вот отсюда: http://st2.userapi.com/js/al/common.js?834 Code: function showBox(url, params, options, e) { if (checkEvent(e)) return false; var opts = options || {}, boxParams = opts.params || {}, box = new MessageBox(boxParams), p = { onDone: function(title, html, js) { if (!box.isVisible()) return; try { show(boxLayerBG); box.setOptions({title: title, hideButtons: boxParams.hideButtons || false}); if (opts.showProgress) { box.show(); } else { show(box.bodyNode); } box.content(html); box.evalBox(js, url, params); if (opts.onDone) opts.onDone(); } catch(e) { topError(e, {dt: 15, type: 103, url: url, query: ajx2q(params), answer: Array.prototype.slice.call(arguments).join('<!>')}); if (box.isVisible()) box.hide(); } }, onFail: function(error) { box.failed = true; setTimeout(box.hide, 0); if (isFunction(opts.onFail)) return opts.onFail(error); }, cache: opts.cache, stat: opts.stat, fromBox: true }; if (opts.prgEl) { opts.showProgress = showGlobalPrg.pbind(opts.prgEl, {cls: opts.prgClass, w: opts.prgW, h: opts.prgH, hide: true}); opts.hideProgress = hide.pbind('global_prg'); } if (opts.showProgress) { extend(p, { showProgress: opts.showProgress, hideProgress: opts.hideProgress }); } else { box.setOptions({title: false, hideButtons: true}).show(); if (__bq.count() < 2) { hide(boxLayerBG); } hide(box.bodyNode); p.showProgress = function() { show(boxLoader); boxRefreshCoords(boxLoader); } p.hideProgress = hide.pbind(boxLoader); } box.removeButtons().addButton(getLang('global_close')); ajax.post(url, params, p); return box; } Может, кто-нибудь может подсказать, как её можно приляпать на свой ресурс? Я как не пытался, у меня отказывается работать. Кстати, что у них за формат такой интересный, разделённый символами <!> ?
Code: <html> <head> <script> var vk = {}; boxLayer = null; window.onload = function () { boxLayer = document.getElementById('box-layer'); domStarted(); showBox('/'); } function showBox(url, params, options, e) { if (checkEvent(e)) return false; var opts = options || {}, boxParams = opts.params || {}, box = new MessageBox(boxParams), p = { onDone: function(title, html, js) { if (!box.isVisible()) return; try { show(boxLayerBG); box.setOptions({title: title, hideButtons: boxParams.hideButtons || false}); if (opts.showProgress) { box.show(); } else { show(box.bodyNode); } box.content(html); box.evalBox(js, url, params); if (opts.onDone) opts.onDone(); } catch(e) { topError(e, {dt: 15, type: 103, url: url, query: ajx2q(params), answer: Array.prototype.slice.call(arguments).join('<!>')}); if (box.isVisible()) box.hide(); } }, onFail: function(error) { box.failed = true; setTimeout(box.hide, 0); if (isFunction(opts.onFail)) return opts.onFail(error); }, cache: opts.cache, stat: opts.stat, fromBox: true }; if (opts.prgEl) { opts.showProgress = showGlobalPrg.pbind(opts.prgEl, {cls: opts.prgClass, w: opts.prgW, h: opts.prgH, hide: true}); opts.hideProgress = hide.pbind('global_prg'); } if (opts.showProgress) { extend(p, { showProgress: opts.showProgress, hideProgress: opts.hideProgress }); } else { box.setOptions({title: false, hideButtons: true}).show(); if (__bq.count() < 2) { hide(boxLayerBG); } hide(box.bodyNode); p.showProgress = function() { show(boxLoader); boxRefreshCoords(boxLoader); } p.hideProgress = hide.pbind(boxLoader); } box.removeButtons().addButton(getLang('global_clos e')); ajax.post(url, params, p); return box; } </script> <script src="common.js"></script> </head> <body> <div id="box-layer"></div> <div id="utils"></div> </body> </html> Вот что получается. Дальше уже надоело, потому что должна быть ещё соответствующая разметка (хтмл) страницы. Вот строка из common.js var l = ge('layer_bg'), lw = l.nextSibling, bl = ge('box_layer_bg'), blw = bl.nextSibling; ge - getElementById, собсна те нужно для начала найти эти контейнеры (layer_bg и т.д.), добавить себе в разметку и далее добавлять нужные по мере выплывания ошибок.
Спасибо огромное! Главное, что объяснили принцып. А формат ответа у них, разделённый символами <!> - это просто набор параметров, разделённых этим сепоратором или это какой-то формат?