Загрузка файла с обработчиками событий временного фрейма и прототипа - PullRequest
0 голосов
/ 05 августа 2010

Я работаю над сценарием, который будет отправлять файлы форм (изображения) через временный iFrame, а затем возвращать эскизы изображений, которые затем перемещаются из iFrame в основной документ. Это отлично работает. Но я также встраиваю ссылку, по которой пользователь может нажать, чтобы удалить изображение, если это необходимо. Эта ссылка использует Prototype для отправки запроса на удаление изображения:

<div id="upload_area">
<div class="image">
    <img src="/img/submitted/thumbnail.jpg" alt="arp" />

    <div class="delete">
        <a href="/images/del_submit/576" id="link1927905376" onclick=" event.returnValue = false; return false;">X</a>

        <script type="text/javascript"> 
            //<![CDATA[
            Event.observe('link1927905376', 'click', function(event) { new Ajax.Updater('upload_area','/images/del_submit/576', {asynchronous:true, evalScripts:true, requestHeaders:['X-Update', 'upload_area']}) }, false);
            //]]>
        </script>
    </div>
</div>

Однако, когда я загружаю это, прослушиватель событий всегда игнорируется. Если я загружаю тот же код через ajax без использования iframe, он работает нормально. Я предполагаю, что это потому, что обработчик событий не регистрируется, когда он перемещается из iframe в основной документ. Но я не уверен, как обойти это ...

Какие-нибудь советы по созданию чего-то подобного?

1 Ответ

0 голосов
/ 22 августа 2010

В конце концов, решение было довольно простым. Поскольку я использовал скрипт не-Prototype, чтобы переместить ответ из iframe в div на странице, мне просто нужно было вызвать evalScripts () для контейнера после его перемещения:

window.parent.$m(id_element).innerHTML.evalScripts();

В случае нормальной Ajax-операции Prototype по умолчанию вызывает evalScripts ().

...