2012-12-21 30 views
0

任何想法如何聆聽/ hook drop事件到WYSIHTML5編輯器?在textareas/WYSIHTML5編輯器上放置事件

我想要的是...我有wysihtml5和用戶上傳的圖像(如附件中所示),當我拖放其中一個圖像到wysihtml5時,它會插入它(我假設只是瀏覽器的一個默認功能,就像當你拖動任何鏈接到任何textarea /文本輸入時一樣),但是與源圖像具有相同的src,這就是縮略圖分辨率,我寧可想要更大的東西。所以我想我會掛起一個drop事件,並從縮略圖的data-big-src屬性中獲取圖像源。

我試圖

editor.on("drop", function() { 
    console.log("fsdf"); 
}); 

其中編輯是wysihtml5的情況下,試圖監聽器添加到原來的textarea以及,沒有它的工作/解僱,任何提示?

enter image description here

//編輯 貼/粘貼:作曲家

可能就是我要找的,但它不返回已刪除對象....

回答

1

因此,即使在粘貼事件中,我無法做任何事情,所以我不得不繞過我的方式,這意味着更改dom.observe(element,pasteEvents,function())函數的內部函數,具體而言,我必須做的是

更改

if (dataTransfer && browser.supportsDataTransfer()) 

if (dataTransfer && browser.supportsDataTransfer() || dataTransfer && $(dataTransfer.getData("text/html")).is("img")) 

因爲很顯然火狐返回false,browser.supportsDataTransfer()函數

那麼如果(數據)內改變

if (data) { 
    if ($(data).is("img")) { 
     event.preventDefault(); 
     var _myImgElement = $(data); 

     that.commands.exec("insertImage", _myImgElement.data("src")); 
    } else { 



     element.focus(); 
     that.commands.exec("insertHTML", data); 
     that.parent.fire("paste").fire("paste:composer"); 
     event.stopPropagation(); 
     event.preventDefault(); 
    } 
    } else { 
    setTimeout(function() { 
     that.parent.fire("paste").fire("paste:composer"); 
    }, 0); 
    } 

}); 

中,我測試被插入的元素是否實際上是圖像,然後獲取其data-src屬性,其中包含url全尺寸的圖像,然後執行插入圖像命令..

雖然它非常笨重,它會打破我更新wysihtml5到最新版本等,我們可以有這樣的API?或者已經存在,我沒有弄明白。

0

試試這個

$($('.wysihtml5-sandbox').contents().find('body')).on("drop", function(event) { 
       event.preventDefault(); 
       event.stopPropagation(); 
       var dt = event.originalEvent.dataTransfer; 
         var files = dt.files; 

       var reader = new FileReader(); 
       reader.onload = function (e) { 
        debugger; 
        var data = this.result; 
        vm.composer.commands.exec('insertImage',e.target.result); 
       } 
       reader.readAsDataURL(files[0]); 
      }); 

https://jsfiddle.net/surajmahajan007/2yu456nw/

相關問題