При нажатии имитировать клик на области
Уважаемы ГУРУ прошли сутки почти без сна, в одной причине.
Есть редактор текста (как например тут) и в него мне надо вставить новую кнопочку и что бы по нажатии на нее происходили каки ето действия... Сутки бьюсь но реально не могу *( Если у кого то есть 1 минутка глянуть подсказать был бы очень благодарен - так как немного далек я от этого, только учусь. Пытался сам но все безуспешно:help: :help: :help: Код панельки var ls = ls || {}; /** * Различные настройки */ ls.settings = (function ($) { this.getMarkitup = function() { return { {separator:'---------------' }, {name: ls.lang.get('panel_images'), className:'editor-pictures', key:'W', beforeInsert:function(l) { ('#z-1').click(); } }, {separator:'---------------' }, {name: ls.lang.get('panel_image'), className:'editor-picture', key:'P', beforeInsert: function(h) { jQuery('#window_upload_img').jqmShow(); } }, {name: ls.lang.get('panel_video'), className:'editor-video', replaceWith:'<video>[!['+ls.lang.get('panel_video_promt')+':!:http://]!]</video>' }, {name: ls.lang.get('panel_url'), className:'editor-link', key:'L', openWith:'<a href="[!['+ls.lang.get('panel_url_promt')+':!:http://]!]"(!( title="[![Title]!]")!)>', closeWith:'</a>', placeHolder:'Your text to link...' }, {name: ls.lang.get('panel_user'), className:'editor-user', replaceWith:'<ls user="[!['+ls.lang.get('panel_user_promt')+']!]" />' }, {separator:'---------------' }, {name: ls.lang.get('panel_clear_tags'), className:'editor-clean', replaceWith: function(markitup) { return markitup.selection.replace(/<(.*?)>/g, "") } }, {name: 'cпойлер', className:'editor-spoiler', openWith:'<spoiler title="Заглянуть под спойлер">', closeWith:'</spoiler>' }, {name: ls.lang.get('panel_cut'), className:'editor-cut', replaceWith: function(markitup) { if (markitup.selection) return '<cut name="'+markitup.selection+'">'; else return '<cut>' }} Я по аналогии прописал новую кнопочку ( добавил там в CSS и в картинки - она есть, но обработьа ее нажатие :blink: Моя кнопочка {name: ls.lang.get('panel_images'), className:'editor-pictures', key:'W', beforeInsert:function(l) { ('#z-1').click(); } В загружаемом отдельно html файле в котором подгружается этот редактор есть такое место <ul> <li class="upload-link"><a href="javascript:ls.image.showForm()" id="image-start-upload"><span id="z-1">Загрузить</span></a></li> </ul> По факту это флеш объект который открывает новое окно загрузки изображений. КАК мне их соединить, что бы при нажатии на кнопочку в редакторе срабатывало типа я нажал на эту ссылку. ПОМОГИТЕ люди добрые :help: :help: |
ls.image.showForm() |
То-есть строка в меню редактора должна быть
{name: ls.lang.get('panel_images'), className:'editor-pictures', key:'W', beforeInsert:function foo() { $("ls.image.showForm() ").click(); } }, ? - в этом я четсно ТУП как пробка - только осваиваю ( |
не сработало ((
Попробовал вот так - просто ошибка и форма вообще не выводится. {name: ls.lang.get('panel_images'), className:'editor-pictures', key:'W', beforeInsert:function ls.image.showForm()}, |
Цитата:
beforeInsert: function() { ls.image.showForm() } |
{name: ls.lang.get('panel_images'), className:'editor-pictures', key:'W', beforeInsert: function() { ls.image.showForm() } }, :cray: :cray: Не срабатывает *(( |
Открой консоль (F12), проверь нет ли ошибок. Запусти из консоли:
Код:
ls.image.showForm() |
ls.image.showForm()
undefined Все полуичлось но немного не так форма вылазит, НО она для не такая для одного файла так сказать *(( Вот в коде сраницы: сюда надо жать <ul> <li class="upload-link"><a href="javascript:ls.image.showForm()" id="image-start-upload">Загрузить</li> </ul> Моет это потому, что там форма как бы флеш? в меню редактора я вставил вот так {name: ls.lang.get('panel_images'), className:'editor-pictures', key:'W', beforeInsert: function() { ls.image.showForm() } }, Просто если нажать на кнопку ЗАГРУЗКА то открывается окно для мультиаплоада, а если через ту констркуцию выше то появляется окошечко в котром надо еще нажать на "выбор" ( только 1 ого файла) и загрузить!" Может быть не передается ИД там, или что то еще ((( |
Нашел ошибку почему форму ВЫВОДИЛО в 1 файл - был не закрыт тег А. Когда закрыл опять все по новой просто не выводит (((
ls.image.showForm() undefined в консоле тоже ошибок нет ((( |
и поправил тег А
в исходном коде появилось такое <ul> <li class="upload-link"><object id="SWFUpload_0" type="application/x-shockwave-flash" data="http://ukrshopper.info/engine/lib/external/swfupload/swfupload.swf?preventswfcaching=1424527736780" width="122" height="30" class="swfupload"><param name="wmode" value="transparent"><param name="movie" value="http://ukrshopper.info/engine/lib/external/swfupload/swfupload.swf?preventswfcaching=1424527736780"><param name="quality" value="high"><param name="menu" value="false"><param name="allowScriptAccess" value="always"><param name="flashvars" value="movieName=SWFUpload_0&uploadURL=http%3A%2F%2Fukrshopper.info%2Fimage%2Fupload&useQueryString=false&requeueOnError=f alse&httpSuccess=&assumeSuccessTimeout=0&params=SSID%3D6e81213d0a2c597b4476505bcb771834%26amp%3Bsecurity_ls_key%3D1649a56498ee96551cb75db697c19c00%26amp%3Btopic_id%3D%26amp* size%3A%2014px%3B%20%7D&buttonAction=-110&buttonDisabled=false&buttonCursor=-2"></object></li> </ul> |
Попробовал все обернуть в
<div id="z-2"> и вывел кнопку {name: ls.lang.get('panel_images1'), className:'editor-pictures1', key:'2', beforeInsert: function foo() { $("#z-2").click(); } }, все равно не срабатывает!!! Блин ну что мне за не фарт, только нашел и встроил нужный мне как воздух скрипт, на 1ой кнопке уже 3 сутки мучаюсь (((( |
На флэшку программно не нажмешь. Нужно подкладывать такую же флешку под твою кнопку в тулбаре. Или забить на пользователей старых браузеров и юзать атрибут mutliple - он без всяких плясок с флешками предоставляет мультивыбор файлов.
|
Не канает mutliple
Хорошо, мне впринципе по барабану как и где выводить. Если программно не нажмешь - КАК вот в этом коде выводить var ls = ls || {}; /** * Различные настройки */ ls.settings = (function ($) { this.getMarkitup = function() { return { onShiftEnter: {keepDefault:false, replaceWith:'<br />\n'}, onCtrlEnter: {keepDefault:false, openWith:'\n<p>', closeWith:'</p>'}, onTab: {keepDefault:false, replaceWith:' '}, markupSet: [ {name:'H4', className:'editor-h4', openWith:'<h4>', closeWith:'</h4>' }, {name:'H5', className:'editor-h5', openWith:'<h5>', closeWith:'</h5>' }, {name:'H6', className:'editor-h6', openWith:'<h6>', closeWith:'</h6>' }, {separator:'---------------' }, {name: ls.lang.get('panel_b'), className:'editor-bold', key:'B', openWith:'(!(<strong>|!|<b>)!)', closeWith:'(!(</strong>|!|</b>)!)' }, {name: ls.lang.get('panel_i'), className:'editor-italic', key:'I', openWith:'(!(<em>|!|<i>)!)', closeWith:'(!(</em>|!|</i>)!)' }, {name: ls.lang.get('panel_s'), className:'editor-stroke', key:'S', openWith:'<s>', closeWith:'</s>' }, {name: ls.lang.get('panel_u'), className:'editor-underline', key:'U', openWith:'<u>', closeWith:'</u>' }, {name: ls.lang.get('panel_quote'), className:'editor-quote', key:'Q', replaceWith: function(m) { if (m.selectionOuter) return '<blockquote>'+m.selectionOuter+'</blockquote>'; else if (m.selection) return '<blockquote>'+m.selection+'</blockquote>'; else return '<blockquote></blockquote>' } }, }, {name: ls.lang.get('panel_list'), className:'editor-ul', openWith:' <li>', closeWith:'</li>', multiline: true, openBlockWith:'<ul>\n', closeBlockWith:'\n</ul>' }, {name: ls.lang.get('panel_list'), className:'editor-ol', openWith:' <li>', closeWith:'</li>', multiline: true, openBlockWith:'<ol>\n', closeBlockWith:'\n</ol>' }, {name: ls.lang.get('panel_list_li'), className:'editor-li', openWith:'<li>', closeWith:'</li>' }, {separator:'---------------' }, {name: ls.lang.get('panel_images'), className:'editor-pictures', key:'1', beforeInsert: function() { ls.image.showForm() } }, {name: ls.lang.get('panel_image'), className:'editor-picture', key:'P', beforeInsert: function(h) { jQuery('#window_upload_img').jqmShow(); } }, {name: ls.lang.get('panel_video'), className:'editor-video', replaceWith:'<video>[!['+ls.lang.get('panel_video_promt')+':!:http://]!]</video>' }, {name: ls.lang.get('panel_url'), className:'editor-link', key:'L', openWith:'<a href="[!['+ls.lang.get('panel_url_promt')+':!:http://]!]"(!( title="[![Title]!]")!)>', closeWith:'</a>', placeHolder:'Your text to link...' }, {name: ls.lang.get('panel_user'), className:'editor-user', replaceWith:'<ls user="[!['+ls.lang.get('panel_user_promt')+']!]" />' }, {separator:'---------------' }, {name: ls.lang.get('panel_clear_tags'), className:'editor-clean', replaceWith: function(markitup) { return markitup.selection.replace(/<(.*?)>/g, "") } }, {name: 'cпойлер', className:'editor-spoiler', openWith:'<spoiler title="Заглянуть под спойлер">', closeWith:'</spoiler>' }, {name: ls.lang.get('panel_cut'), className:'editor-cut', replaceWith: function(markitup) { if (markitup.selection) return '<cut name="'+markitup.selection+'">'; else return '<cut>' }} ] } }; return this; }).call(ls.settings || {},jQuery); выводить ту часть - которая отвечает за вывод я так понимаю этой флешки ( по крайней мере именно это я вставляю в шаблоне и все работает) <ul> <li class="upload-link"><a href="javascript:ls.image.showForm()" id="image-start-upload">Загрузить</a></li> </ul> |
По фатку за вывод этого флеша отвечает
<a href="javascript:ls.image.showForm()" id="image-start-upload">Загрузить</a> Вот мне бы это вставить в меню (( |
Думаю тебе придется сначала сгенерировать тулбар, затем добавить флешку в нужную кнопку. Ищи по коду где используется image-start-upload. Если там document.getElementById, то замени на document.querySelector('.editor-picture'). Если там селектор #image-start-upload, то просто измени селектор.
|
В подключаемом скрипте для мультизагрузки
this.showForm = function () { var $select = $('#image-start-upload'); if ($select.length) { var pos = $select.offset(); w = $select.outerWidth(); h = $select.outerHeight(); t = pos.top + h - 30 + 'px'; l = pos.left - 15 + 'px'; $('#image-upload-form').css({ 'top':t, 'left':l }); } $('#image-upload-form').show(); } А на что и где изменить этот селектор ? Простите за тупость ( |
Вот еще в самом начале есть
this.initSwfUpload = function (opt) { var opt = opt || {}; //alert(opt.post_params); opt.button_placeholder_id = 'image-start-upload'; if ($.cookie('ls_image_target_tmp')) { opt.post_params.ls_image_target_tmp = $.cookie('ls_image_target_tmp'); } else { opt.post_params.ls_image_target_tmp = 0; } $(ls.swfupload).bind('load', function () { this.swfu = ls.swfupload.init(opt); $(this.swfu).bind('eUploadProgress', this.swfHandlerUploadProgress); $(this.swfu).bind('eFileDialogComplete', this.swfHandlerFileDialogComplete); $(this.swfu).bind('eUploadSuccess', this.swfHandlerUploadSuccess); $(this.swfu).bind('eUploadComplete', this.swfHandlerUploadComplete); }.bind(this)); ls.swfupload.loadSwf(); } |
Помогите пожалуйста нубу (
|
Походу скрипт флешки ждет именно id. Тогда назначь этот id кнопке. В markupSet может можно указать id, аналогично className? Попробуй добавить id: 'image-start-upload' и посмотреть в инспекторе на кнопку - назначился ли id. Если не назначился, то после генерации тулбара добавь id так:
$('.editor-picture').prop('id', 'image-start-upload'); Только ссылку Загрузить не забудь удалить. |
Сделал так
{name: ls.lang.get('panel_images'), className:'editor-pictures', id:'image-start-upload', key:'1' }, ссылку в шаблоне убрал -но воз и ныне там ( НЕмного не понял как смотреть в консоли где передался или нет ID + куда это добавить $('.editor-picture').prop('id', 'image-start-upload'); |
Цитата:
|
Пошел по другому пути, просто в DIV инициализации верхнего вемню всунул тот html код. Вроде все ОК! Но возник вопрос как добавить красивую кнопочку рядом с текстом загрузка..
SWFUpload.prototype.getFlashHTML = function () { // Flash Satay object syntax: [url]http://www.alistapart.com/articles/flashsatay[/url] return ['<object id="', this.movieName, '" type="application/x-shockwave-flash" data="', this.settings.flash_url, '" width="', this.settings.button_width, '" height="', this.settings.button_height, '" class="swfupload">', '<param name="wmode" value="', this.settings.button_window_mode, '" />', '<param name="movie" value="', this.settings.flash_url, '" />', '<param name="quality" value="high" />', '<param name="menu" value="false" />', '<param name="allowScriptAccess" value="always" />', '<param name="flashvars" value="' + this.getFlashVars() + '" />', '</object>'].join(""); }; return ['<img src="/images/images.png" />,<object id="',- пробовал вот так но тогда появляется рисунок, а флеш объект не грузится (( |
Часовой пояс GMT +3, время: 05:52. |