我正在编写一个脚本,它将通过临时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移动到主文档时没有被注册。但我不确定如何解决这个问题......
有关制作此类作品的任何提示吗?
答案 0 :(得分:0)
毕竟,解决方案相当简单。由于我使用非Prototype脚本将响应从iframe移动到页面上的div,因此我只需在移动后调用容器上的evalScripts():
window.parent.$m(id_element).innerHTML.evalScripts();
在正常的Ajax操作的情况下,Prototype默认调用evalScripts()。