vm.$refs.myQuillEditor.quill.insertEmbed(vm.addRange !== null ? vm.addRange.index : 0, 'image', value, Quill.sources.USER)
我在用這個(gè)編輯器自定義toolbar按鈕操作時(shí)用到上傳功能,最后得到一個(gè)url值,我需要在編輯器里顯示出來,如果是圖片我給第二個(gè)參數(shù)'image'就可以了,那如果我想顯示一個(gè)a標(biāo)簽?zāi)?,查了文檔也沒找到方法,求告知
下面展示了在Quill
中如何自定義FileBlot
以完成文件上傳與回顯功能
FileBlot
可參考例子:https://quilljs.com/guides/cl...
var Quill = require('quill/dist/quill.js')
var Link = Quill.import('formats/link');
class FileBlot extends Link { // 繼承Link Blot
static create(value) {
let node = undefined
if (value&&!value.href){ // 適應(yīng)原本的Link Blot
node = super.create(value);
}
else{ // 自定義Link Blot
node = super.create(value.href);
node.setAttribute('download', true); // 左鍵點(diǎn)擊即下載
node.innerText = value.innerText;
}
return node;
}
}
FileBlot.blotName = 'link';
FileBlot.tagName = 'A';
Quill.register(FileBlot);
Blot
// 當(dāng)點(diǎn)擊quill中上傳文件的button后調(diào)用
// 這里url是先上傳文件后從服務(wù)器返回的文件資源地址
insertToEditor(url, file, editor) {
const range = editor.getSelection();
if(/^image/.test(file.type)){ // image直接插入image標(biāo)簽顯示
editor.insertEmbed(range.index, "image", url);
}
else{ // file則顯示名為filename的A標(biāo)簽
editor.insertEmbed(range.index, 'link', {href:url, innerText:file.name}, "api")
}
}
經(jīng)過本人實(shí)驗(yàn),用推薦答案里的方法確實(shí)能生成a標(biāo)簽鏈接,當(dāng)你點(diǎn)擊時(shí),quill編輯器會默認(rèn)為所有a標(biāo)簽彈出一個(gè)tooltip框。
這意味著,即使你在擴(kuò)展Link Blot增加一些屬性,例如target,download等等,實(shí)際上時(shí)無法生效的。
目前比較簡單但是不太優(yōu)雅的方法是:為a標(biāo)簽彈出框$('.ql-preview')注冊一個(gè)點(diǎn)擊事件,根據(jù)自己的需求覆蓋掉
比如說不希望鏈接在新窗口打開
$('.ql-preview').one('click',function() {
if ($(this).attr('href').startsWith('#/home')) {
$(this).removeAttr('target') //文檔鏈接,在本頁跳轉(zhuǎn),不打開新的窗口
}
})
這個(gè)問題的解決方案我也找了好久好久,insertEmbed和insertText都不能實(shí)現(xiàn)這個(gè)功能,可能唯一的辦法是通過dangerouslyPasteHTML勉強(qiáng)可以實(shí)現(xiàn),勉強(qiáng)的意思是,瀏覽器會屏蔽一些代碼,可能會使粘貼的代碼不完整,這可能就是dangerously的意思吧。當(dāng)然可以直接操作DOM,但想插入光標(biāo)位置(getSelection)卻很難實(shí)現(xiàn),網(wǎng)上找了好久也沒找到方法,quill大家都說好,可這簡單的需求都沒辦法解決,我想quill言過其實(shí)了吧。
樓主找到方案麻煩跟我說一聲
北大青鳥APTECH成立于1999年。依托北京大學(xué)優(yōu)質(zhì)雄厚的教育資源和背景,秉承“教育改變生活”的發(fā)展理念,致力于培養(yǎng)中國IT技能型緊缺人才,是大數(shù)據(jù)專業(yè)的國家
北大青鳥中博軟件學(xué)院創(chuàng)立于2003年,作為華東區(qū)著名互聯(lián)網(wǎng)學(xué)院和江蘇省首批服務(wù)外包人才培訓(xùn)基地,中博成功培育了近30000名軟件工程師走向高薪崗位,合作企業(yè)超4
中公教育集團(tuán)創(chuàng)建于1999年,經(jīng)過二十年潛心發(fā)展,已由一家北大畢業(yè)生自主創(chuàng)業(yè)的信息技術(shù)與教育服務(wù)機(jī)構(gòu),發(fā)展為教育服務(wù)業(yè)的綜合性企業(yè)集團(tuán),成為集合面授教學(xué)培訓(xùn)、網(wǎng)
達(dá)內(nèi)教育集團(tuán)成立于2002年,是一家由留學(xué)海歸創(chuàng)辦的高端職業(yè)教育培訓(xùn)機(jī)構(gòu),是中國一站式人才培養(yǎng)平臺、一站式人才輸送平臺。2014年4月3日在美國成功上市,融資1
曾工作于聯(lián)想擔(dān)任系統(tǒng)開發(fā)工程師,曾在博彥科技股份有限公司擔(dān)任項(xiàng)目經(jīng)理從事移動互聯(lián)網(wǎng)管理及研發(fā)工作,曾創(chuàng)辦藍(lán)懿科技有限責(zé)任公司從事總經(jīng)理職務(wù)負(fù)責(zé)iOS教學(xué)及管理工作。
浪潮集團(tuán)項(xiàng)目經(jīng)理。精通Java與.NET 技術(shù), 熟練的跨平臺面向?qū)ο箝_發(fā)經(jīng)驗(yàn),技術(shù)功底深厚。 授課風(fēng)格 授課風(fēng)格清新自然、條理清晰、主次分明、重點(diǎn)難點(diǎn)突出、引人入勝。
精通HTML5和CSS3;Javascript及主流js庫,具有快速界面開發(fā)的能力,對瀏覽器兼容性、前端性能優(yōu)化等有深入理解。精通網(wǎng)頁制作和網(wǎng)頁游戲開發(fā)。
具有10 年的Java 企業(yè)應(yīng)用開發(fā)經(jīng)驗(yàn)。曾經(jīng)歷任德國Software AG 技術(shù)顧問,美國Dachieve 系統(tǒng)架構(gòu)師,美國AngelEngineers Inc. 系統(tǒng)架構(gòu)師。