最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

wangEditor編輯器失去焦點(diǎn)后仍然可以在原位置插入圖片分析

 更新時(shí)間:2015年05月06日 09:30:47   投稿:hebedich  
本文給大家?guī)?lái)的是一款非常不錯(cuò)的富文本編輯器WangEditor,他最大的特點(diǎn)是它在ie6,7,8上都可以做到失去焦點(diǎn)后仍然可以在原位置插入圖片,而且代碼量很少,下面我們就來(lái)分析下他是如何實(shí)現(xiàn)的呢

昨天在github上發(fā)現(xiàn)了一個(gè)很好的富文本編輯器wangEditor,一看名字就是中國(guó)人寫(xiě)的。這個(gè)編輯器好在支持ie6+,另外最重要的一點(diǎn),它在ie6,7,8上都可以做到失去焦點(diǎn)后仍然可以在原位置插入圖片,而且代碼量很少。于是很好奇的看看它是怎么做的,裁剪了一下,就這些

var currentRange,_parentElem,supportRange = typeof document.createRange === 'function';
  function getCurrentRange() {
    var selection,
    range,
    txt = $('editor');
    if(supportRange){
      selection = document.getSelection();
      if (selection.getRangeAt && selection.rangeCount) {
        range = document.getSelection().getRangeAt(0);
        _parentElem = range.commonAncestorContainer;
      }
    }else{
      range = document.selection.createRange();
      _parentElem = range.parentElement();
    }
    if( _parentElem && (avalon.contains(txt, _parentElem) || txt === _parentElem) ){
      parentElem = _parentElem;
      return range;
    }
    return range;
  }
  function saveSelection() {
    currentRange = getCurrentRange();
  }
  function restoreSelection() {
    if(!currentRange){
      return;
    }
    var selection,
    range;
    if(supportRange){
      selection = document.getSelection();
      selection.removeAllRanges();
      selection.addRange(currentRange);
    }else{
      range = document.selection.createRange();
      range.setEndPoint('EndToEnd', currentRange);
      if(currentRange.text.length === 0){
        range.collapse(false);
      }else{
        range.setEndPoint('StartToStart', currentRange);
      }
      range.select();
    }
  }

這可比上一篇里面的那個(gè)從kindeditor扒下來(lái)的封裝少太多了,而且看起來(lái)也是一目了然。

怎么用呢

function insertImage(html){
    restoreSelection();
    if(document.selection)
      currentRange.pasteHTML(html); 
    else
      document.execCommand("insertImage", false,html);
    saveSelection();
  }
  avalon.bind($('post_input'),'mouseup',function(e){
    saveSelection();
  });
  avalon.bind($('post_input'),'keyup',function(e){
    saveSelection();
  });

和上一篇里面一樣,必須要對(duì)編輯器的div進(jìn)行keyup,mouseup綁定,以便保存selection,range,方便在失去焦點(diǎn)后仍然可以在原來(lái)位置插入圖片。調(diào)用的時(shí)候直接insertImage(html)就可以了。這里用的不是iframe,是div contenteditable=true.

wangEditor里面的例子是插入外鏈圖片,一次只能插入一張圖片。wangEditor源碼統(tǒng)一用的是document.execCommand("insertImage", false,html);。但是這個(gè)方法有個(gè)問(wèn)題,就是在ie6,7,8中,如果要插入多張圖片的話,只會(huì)在原來(lái)位置插入一張圖片。

先把if注釋掉

一次插入兩張圖片

這次嚴(yán)謹(jǐn)點(diǎn),ie6

ie7

ie8

解決方法是如果是ie6,7,8的話,currentRange.pasteHTML(html); 。插入html,也就是把上面的if注釋去掉.當(dāng)然插入的不再是圖片地址了,現(xiàn)在是包含圖片地址的整個(gè)img標(biāo)簽

ie6

ie7

ie8

最后附上例子下載

以上所述就是本文的全部?jī)?nèi)容了,希望大家能夠喜歡。

相關(guān)文章

  • 簡(jiǎn)易的投票系統(tǒng)以及js刷票思路和方法

    簡(jiǎn)易的投票系統(tǒng)以及js刷票思路和方法

    這篇文章主要介紹了簡(jiǎn)易的投票系統(tǒng)以及js刷票思路和方法,文章十分的詳盡,思路也很清晰,是篇非常不錯(cuò)的文章,這里推薦給大家,有需要的小伙伴可以參考下。
    2015-04-04
  • JSON.parse損壞大數(shù)字的原因解析及解決方案

    JSON.parse損壞大數(shù)字的原因解析及解決方案

    從10多年前JSON在線編輯器的早期開(kāi)始,用戶經(jīng)常反映編輯器有時(shí)會(huì)破壞他們JSON文檔中的大數(shù)字的問(wèn)題,這篇文章主要介紹了為什么JSON.parse會(huì)損壞大數(shù)字,如何解決這個(gè)問(wèn)題,需要的朋友可以參考下
    2022-10-10
  • 微信小程序日歷插件代碼實(shí)例

    微信小程序日歷插件代碼實(shí)例

    這篇文章主要介紹了微信小程序日歷插件代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-12-12
  • Javascript前端UI框架Kit使用指南之kitjs事件管理

    Javascript前端UI框架Kit使用指南之kitjs事件管理

    本文詳細(xì)介紹了Kitjs的事件管理功能,包括普通的Dom事件、Kit如何解決問(wèn)題、代碼解析、注銷(xiāo)事件等。需要的朋友可以參考下。
    2014-11-11
  • webpack 3.X學(xué)習(xí)之多頁(yè)面打包的方法

    webpack 3.X學(xué)習(xí)之多頁(yè)面打包的方法

    這篇文章主要介紹了webpack 3.X學(xué)習(xí)之多頁(yè)面打包的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-09-09
  • javascript 動(dòng)態(tài)創(chuàng)建表格的2種方法總結(jié)

    javascript 動(dòng)態(tài)創(chuàng)建表格的2種方法總結(jié)

    本文給大家總結(jié)了2種使用javascript動(dòng)態(tài)創(chuàng)建表格的方法,非常簡(jiǎn)單實(shí)用,小伙伴們自己對(duì)比下看看哪種更適合你呢,一般本人是使用第一種的。
    2015-03-03
  • JS簡(jiǎn)單實(shí)現(xiàn)禁止訪問(wèn)某個(gè)頁(yè)面的方法

    JS簡(jiǎn)單實(shí)現(xiàn)禁止訪問(wèn)某個(gè)頁(yè)面的方法

    這篇文章主要介紹了JS簡(jiǎn)單實(shí)現(xiàn)禁止訪問(wèn)某個(gè)頁(yè)面的方法,涉及基本的頁(yè)面跳轉(zhuǎn)操作技巧,需要的朋友可以參考下
    2016-09-09
  • js怎么只刷新當(dāng)前頁(yè)面一次

    js怎么只刷新當(dāng)前頁(yè)面一次

    Javascript刷新頁(yè)面的幾種方法:location.reload()、location.replace(location)、history.go(0)、location=location、location.assign(location)、document.execCommand('Refresh')、window.navigate(location)、document.URL=location.href,js怎么只刷新當(dāng)前頁(yè)面一次呢
    2023-09-09
  • 很不錯(cuò)的兩款Bootstrap Icon圖標(biāo)選擇組件

    很不錯(cuò)的兩款Bootstrap Icon圖標(biāo)選擇組件

    這篇文章主要介紹了不容錯(cuò)過(guò)的兩款Bootstrap Icon圖標(biāo)選擇組件,支持自定義的圖標(biāo),拿出來(lái)分享下,絕對(duì)的干貨,感興趣的小伙伴們可以參考一下
    2016-01-01
  • JS按回車(chē)鍵實(shí)現(xiàn)登錄的方法

    JS按回車(chē)鍵實(shí)現(xiàn)登錄的方法

    這篇文章主要介紹了JS按回車(chē)鍵實(shí)現(xiàn)登錄的方法,在web程序設(shè)計(jì)中非常實(shí)用的技巧,可用于表單提交的情況,具有很好的用戶體驗(yàn),需要的朋友可以參考下
    2014-08-08

最新評(píng)論

玛纳斯县| 江油市| 湘潭市| 盐源县| 绍兴市| 长兴县| 东莞市| 红安县| 石渠县| 理塘县| 资中县| 宣恩县| 海门市| 闸北区| 古浪县| 松滋市| 潞城市| 合川市| 红安县| 若羌县| 沙坪坝区| 进贤县| 白沙| 稻城县| 高碑店市| 鄂托克旗| 井冈山市| 龙岩市| 和静县| 玉山县| 额尔古纳市| 六盘水市| 文登市| 孝感市| 瑞丽市| 通海县| 酒泉市| 隆化县| 泾阳县| 米林县| 高青县|