我有TinyMCE和拖放圖像上傳工作正常。我已經指定了images_upload_url: 'handler.php'
並編寫了接收數據並正確處理它的處理程序。TinyMCE圖像上傳覆蓋images_upload_handler
但是,在圖像被放到頁面上時,我想動態傳遞給客戶端的handler.php中的一個額外參數。
我在文檔中看到,您可以通過編寫自己的images_upload_handler函數來「滾動自己的」函數。這就足夠了,但是我寧願使用現有的TinyMCE來簡化。我想知道有沒有一種方法可以在默認的images_upload_handler函數運行之前動態地改變images_upload_url以動態地附加GET參數(例如?foo = bar)?或者有沒有一種方法可以爲images_upload_handler指定我自己的函數,但之後直接調用默認的「父」TinyMCE函數?我想是這樣的(就像樣機/想法):
tinyMCE.init({
selector: 'textarea',
images_upload_url: 'handler.php',
images_upload_handler: function (blobInfo, success, failure) {
// change images_upload_url to handler.php?foo=bar
// call default TinyMCE images_upload_handler function.
}
})
或者,而不是直接重寫images_upload_handler,是有一個函數或事件,我可以掛接到圖像上滴下後編輯器,但在images_upload_handler觸發之前?
編輯:
我試圖動態地設置images_upload_url在init_instance_callback事件作爲所以不同的方法:
images_upload_url: 'handler.php',
init_instance_callback : function(ed) {
ed.settings.images_upload_url += '?foo=bar';
console.log('changed images_upload_url to: ' + ed.settings.images_upload_url);
}
在實際的console.log輸出改變「handler.php這種情況下? foo = bar',但是它實際上傳了一個圖片,它回到了handler.php - 看起來它沒有被正確改變?
謝謝。我確實嘗試了這種方法,但是我的應用程序是單頁應用程序。每個屏幕加載/更改由js控制,並且初始init在應用程序的第一個php頁面加載時僅觸發一次(僅出現一次)。所以當嘗試這種方法時,它會在第一次加載時正確加載變量,但隨着每個javascript屏幕更改,它不會更新js端更改的新動態變量。 這是出於性能原因而完成的,因此init不需要在每個頁面更改時調用。 – Manachi
在這種情況下,您每次需要更改此值時都需要刪除並重新初始化編輯器。 –
我曾希望避免這種情況,但最終以這種方式結束了,並且每次換頁時都重新編輯了編輯器,至今似乎工作正常。 我已經勾選了答案,即使技術上這是你跟進的評論,我去了。但是你的回答也有助於確認設置在初始化後無法改變,這阻止了我用那個頭撞牆。感謝您的幫助:) – Manachi