2010-08-04 58 views
0

我正在處理一個腳本,該腳本將通過臨時iFrame提交表單文件(圖像),然後返回圖像的縮略圖,然後將圖像從iFrame移至主文檔。這工作正常。但我也嵌入了一個鏈接,用戶可以點擊刪除圖像,如果需要的話。此鏈接使用Prototype發送請求刪除的圖像:帶有臨時iframe和原型事件處理程序的文件上傳

<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

需要更多的細節或部分的JavaScript代碼? – bjudson 2010-08-19 20:10:40

回答

0

畢竟,解決方案相當簡單。由於我是使用非原型腳本來擺脫的iframe頁面上一個div的反應,我不得不調用容器上evalScripts(),它被轉移後:

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

在的情況下,一個普通的Ajax操作,Prototype默認調用evalScripts()。