中文字幕免费精品_亚洲视频自拍_亚洲综合国产激情另类一区_色综合咪咪久久

使用JavaScript為Kindeditor自定義按鈕增加Audio標(biāo)簽
來(lái)源:易賢網(wǎng) 閱讀:1936 次 日期:2016-07-19 14:57:26
溫馨提示:易賢網(wǎng)小編為您整理了“使用JavaScript為Kindeditor自定義按鈕增加Audio標(biāo)簽”,方便廣大網(wǎng)友查閱!

這篇文章主要介紹了使用JavaScript為Kindeditor自定義按鈕增加Audio標(biāo)簽的方法,KindEditor是一套開(kāi)源的HTML可視化編輯器,需要的朋友可以參考下

流程比較簡(jiǎn)單,主要有以下步驟:

注冊(cè)插件(按鈕、Lang、htmlTags、插件腳本)

基于media插件代碼修改

注冊(cè)插件

首先,全局配置kindeditor參數(shù):

KindEditor.lang({

 audio : 'MP3'

});

 KindEditor.options.htmlTags['audio'] = ['src','controls','autoplay','type'];

 KindEditor.options.htmlTags['source'] = ['src','controls','autoplay','type'];

在初始化編輯器的地方,配置按鈕列表items參數(shù),把

'audio'

放在合適的位置:

KindEditor.ready(function(K) {

editor = K.create('#info,#spread_info', {

  //其他配置省略...

  items : [

    'source', '|', 'undo', 'redo', '|', 'preview', 'print', 'template', 'code', 'cut', 'copy', 'paste',

    'plainpaste', 'wordpaste', '|', 'justifyleft', 'justifycenter', 'justifyright',

    'justifyfull', 'insertorderedlist', 'insertunorderedlist', 'indent', 'outdent', 'subscript',

    'superscript', 'clearhtml', 'quickformat', 'selectall', '|', 'fullscreen', '/',

    'formatblock', 'fontname', 'fontsize', '|', 'forecolor', 'hilitecolor', 'bold',

    'italic', 'underline', 'strikethrough', 'lineheight', 'removeformat', '|', 'image', 'multiimage',

     '|' ,'table', 'hr', 'emoticons', 'baidumap', 'pagebreak',

    'anchor', 'link', 'unlink', '|', 'about','audio'

  ]

});

為了便于閱讀,我把a(bǔ)udio按鈕放在最后,在 "幫助" 標(biāo)簽的后面。

為了讓按鈕能夠顯示,我們還需要指定一下css樣式:

<style>

  .ke-icon-audio {

    background-position: 0px -528px;

    width: 16px;

    height: 16px;

  }

</style>

這里我圖方便,直接用了自帶的音視頻按鈕的圖標(biāo),自定義圖標(biāo)請(qǐng)手動(dòng)指定 background 樣式屬性。

最后,創(chuàng)建腳本

kindeditor/plugins/audio/audio.js

audio目錄手動(dòng)建立。

我們把

plugins/media/media.js

中的代碼復(fù)制到audio.js里,然后著手修改。

修改media插件

主要是去掉一些無(wú)用的屬性,如 寬、高、自動(dòng)播放等,并修改插入代碼的部分,手動(dòng)構(gòu)建 "audio" 標(biāo)簽的html代碼。

/**

 * Created by admin on 15-5-6.

 */

KindEditor.plugin('audio', function(K) {

  var self = this, name = 'audio', lang = self.lang(name + '.'),

    allowMediaUpload = K.undef(self.allowMediaUpload, true),

    allowFileManager = K.undef(self.allowFileManager, false),

    formatUploadUrl = K.undef(self.formatUploadUrl, true),

    uploadJson = K.undef(self.uploadJson, self.basePath + 'php/upload_json.php');

  self.plugin.media = {

    edit : function() {

      var html = [

        '<div style="padding:20px;">',

        //url

        '<div class="ke-dialog-row">',

        '<label for="keUrl" style="width:60px;">MP3 URL</label>',

        '<input class="ke-input-text" type="text" id="keUrl" name="url" value="" style="width:160px;" />  ',

        '<input type="button" class="ke-upload-button" value="上傳" />  ',

        '</div>',

        '</div>'

      ].join('');

      var dialog = self.createDialog({

          name : name,

          width : 450,

          height : 230,

          title : self.lang(name),

          body : html,

          yesBtn : {

            name : self.lang('yes'),

            click : function(e) {

              var url = K.trim(urlBox.val()),

                width = widthBox.val(),

                height = heightBox.val();

              if (url == 'http://' || K.invalidUrl(url)) {

                alert(self.lang('invalidUrl'));

                urlBox[0].focus();

                return;

              }

              if (!/^\d*$/.test(width)) {

                alert(self.lang('invalidWidth'));

                widthBox[0].focus();

                return;

              }

              if (!/^\d*$/.test(height)) {

                alert(self.lang('invalidHeight'));

                heightBox[0].focus();

                return;

              }

              var html = '<p><audio src="'+url+'" controls="controls"></audio><br/></p>';

              self.insertHtml(html).hideDialog().focus();

            }

          }

        }),

        div = dialog.div,

        urlBox = K('[name="url"]', div),

        viewServerBtn = K('[name="viewServer"]', div),

        widthBox = K('[name="width"]', div),

        heightBox = K('[name="height"]', div),

        autostartBox = K('[name="autostart"]', div);

      urlBox.val('http://');

      if (allowMediaUpload) {

        var uploadbutton = K.uploadbutton({

          button : K('.ke-upload-button', div)[0],

          fieldName : 'imgFile',

          url : K.addParam(uploadJson, 'dir=audio'),

          afterUpload : function(data) {

            dialog.hideLoading();

            if (data.error === 0) {

              var url = data.url;

              if (formatUploadUrl) {

                url = K.formatUrl(url, 'absolute');

              }

              urlBox.val(url);

              if (self.afterUpload) {

                self.afterUpload.call(self, url);

              }

              alert(self.lang('uploadSuccess'));

            } else {

              alert(data.message);

            }

          },

          afterError : function(html) {

            dialog.hideLoading();

            self.errorDialog(html);

          }

        });

        uploadbutton.fileBox.change(function(e) {

          dialog.showLoading(self.lang('uploadLoading'));

          uploadbutton.submit();

        });

      } else {

        K('.ke-upload-button', div).hide();

      }

      if (allowFileManager) {

        viewServerBtn.click(function(e) {

          self.loadPlugin('filemanager', function() {

            self.plugin.filemanagerDialog({

              viewType : 'LIST',

              dirName : 'media',

              clickFn : function(url, title) {

                if (self.dialogs.length > 1) {

                  K('[name="url"]', div).val(url);

                  self.hideDialog();

                }

              }

            });

          });

        });

      } else {

        viewServerBtn.hide();

      }

      var img = self.plugin.getSelectedMedia();

      if (img) {

        var attrs = K.mediaAttrs(img.attr('data-ke-tag'));

        urlBox.val(attrs.src);

        widthBox.val(K.removeUnit(img.css('width')) || attrs.width || 0);

        heightBox.val(K.removeUnit(img.css('height')) || attrs.height || 0);

        autostartBox[0].checked = (attrs.autostart === 'true');

      }

      urlBox[0].focus();

      urlBox[0].select();

    },

    'delete' : function() {

      self.plugin.getSelectedMedia().remove();

    }

  };

  self.clickToolbar(name, self.plugin.media.edit);

});

至此,整個(gè)插件基本結(jié)束。

需要注意的是,上傳文件用的是通用的配置uploadJson參數(shù),但會(huì)在上傳的時(shí)候自動(dòng)添加一個(gè)get參數(shù) "dir=audio" ,以便后臺(tái)識(shí)別:

url : K.addParam(uploadJson, 'dir=audio'),

更多信息請(qǐng)查看網(wǎng)絡(luò)編程
易賢網(wǎng)手機(jī)網(wǎng)站地址:使用JavaScript為Kindeditor自定義按鈕增加Audio標(biāo)簽
由于各方面情況的不斷調(diào)整與變化,易賢網(wǎng)提供的所有考試信息和咨詢回復(fù)僅供參考,敬請(qǐng)考生以權(quán)威部門公布的正式信息和咨詢?yōu)闇?zhǔn)!
關(guān)于我們 | 聯(lián)系我們 | 人才招聘 | 網(wǎng)站聲明 | 網(wǎng)站幫助 | 非正式的簡(jiǎn)要咨詢 | 簡(jiǎn)要咨詢須知 | 新媒體/短視頻平臺(tái) | 手機(jī)站點(diǎn)

版權(quán)所有:易賢網(wǎng)

中文字幕免费精品_亚洲视频自拍_亚洲综合国产激情另类一区_色综合咪咪久久
中文字幕在线不卡一区| 一区二区三区免费在线观看| 91国产免费看| 自拍偷拍国产精品| 日本精品一区二区三区高清| 国产精品三级在线观看| 色妞www精品视频| 亚欧色一区w666天堂| 国产丝袜欧美中文另类| 亚洲精品ww久久久久久p站| 色婷婷综合久久| 性做久久久久久久免费看| 91精品国产麻豆| 国产美女视频一区| 综合电影一区二区三区| 欧美日韩久久久久久| 国产一区二区电影| 亚洲综合清纯丝袜自拍| 日韩精品中午字幕| 成人免费的视频| 一区二区三区在线影院| 欧美大片在线观看一区| 99在线视频精品| 日本免费在线视频不卡一不卡二| 久久午夜免费电影| 欧美中文字幕亚洲一区二区va在线| 日本v片在线高清不卡在线观看| 国产拍欧美日韩视频二区| 欧美在线小视频| 成人免费毛片高清视频| 日本一不卡视频| 最新成人av在线| 久久久久久久电影| 在线成人av网站| 99re这里都是精品| 国产一区二区三区电影在线观看| 亚洲免费伊人电影| 久久久www成人免费无遮挡大片| 在线免费不卡视频| 不卡av在线网| 国产91丝袜在线播放0| 全国精品久久少妇| 夜夜爽夜夜爽精品视频| 国产精品美女www爽爽爽| 日韩精品一区国产麻豆| 欧美日韩在线播| 欧洲一区在线观看| 在线中文字幕一区| av电影在线观看不卡| 国产传媒日韩欧美成人| 国产一区二区视频在线| 精品综合久久久久久8888| 日韩av一区二| 奇米影视一区二区三区小说| 亚洲午夜精品一区二区三区他趣| 中文字幕佐山爱一区二区免费| 国产欧美日韩另类一区| 久久精品亚洲精品国产欧美| 久久精品免视看| 欧美激情一区二区三区| 中文字幕精品一区| 国产精品久久久久久亚洲伦| 国产精品伦一区| 中文字幕在线一区二区三区| 亚洲国产精品成人综合色在线婷婷 | 日韩一级在线观看| 91精品国产一区二区三区蜜臀 | 免费视频一区二区| 免费高清视频精品| 国产麻豆成人传媒免费观看| 韩国精品主播一区二区在线观看 | 欧美日韩一区中文字幕| 精品婷婷伊人一区三区三| 精品视频资源站| 欧美一级夜夜爽| 久久精品在这里| 一区二区三区在线观看动漫| 午夜精品成人在线| 国产综合久久久久久久久久久久| 国产成人免费9x9x人网站视频| 成人精品免费网站| 欧美视频精品在线| 久久午夜羞羞影院免费观看| 日韩理论片在线| 免费黄网站欧美| va亚洲va日韩不卡在线观看| 欧美三级欧美一级| 国产午夜精品一区二区| 亚洲精选视频在线| 美女性感视频久久| 成人a免费在线看| 欧美精品日韩综合在线| 国产性做久久久久久| 一区二区三区不卡视频| 国内久久精品视频| 欧美性受xxxx黑人xyx性爽| 久久奇米777| 三级影片在线观看欧美日韩一区二区| 国产一区二区三区av电影| 欧美日韩一区中文字幕| 最新热久久免费视频| 精彩视频一区二区三区| 欧美日韩一级大片网址| 中文字幕av在线一区二区三区| 一区二区高清在线| 懂色av中文字幕一区二区三区| 欧美日韩成人激情| 亚洲品质自拍视频网站| 国产伦精品一区二区三区视频青涩 | 欧美日韩一区二区在线观看| 国产日韩欧美精品综合| 日本亚洲一区二区| 欧美亚洲一区二区在线观看| 亚洲国产精品av| 狠狠色丁香久久婷婷综合丁香| 欧美调教femdomvk| 亚洲三级电影网站| caoporn国产一区二区| 精品电影一区二区| 日本伊人午夜精品| 欧美一级理论片| 日日夜夜精品免费视频| 欧美日韩免费一区二区三区视频| 国产精品福利一区二区| 国产成人综合亚洲91猫咪| 精品毛片乱码1区2区3区| 亚洲v日本v欧美v久久精品| 色婷婷狠狠综合| 亚洲视频免费在线观看| 99精品视频中文字幕| 亚洲婷婷综合久久一本伊一区| 成人午夜精品一区二区三区| 久久久久国产免费免费| 国产福利91精品| 国产日韩欧美综合一区| 不卡区在线中文字幕| 136国产福利精品导航| 色婷婷久久久综合中文字幕| 亚洲一二三四在线观看| 欧美精品国产精品| 精品一区二区日韩| 精品国产乱码久久久久久牛牛| 精品系列免费在线观看| 国产精品污网站| 99综合影院在线| 亚洲成人av福利| 精品国产凹凸成av人导航| 国产精品18久久久久| 中文字幕亚洲区| 欧美亚洲尤物久久| 国产一区 二区| 日韩美女视频一区| 在线播放欧美女士性生活| 久久国产精品区| 中文字幕在线不卡国产视频| 精品视频资源站| 国产一区二区不卡| 亚洲精品免费在线| 欧美电视剧免费观看| 99久久综合99久久综合网站| 夜色激情一区二区| 国产午夜精品久久久久久免费视 | 国产91精品一区二区麻豆网站| 国产精品久久三区| 91精品免费观看| 成人在线视频一区| 天堂成人国产精品一区| 中文字幕第一页久久| 欧美日韩国产乱码电影| 成人午夜视频福利| 另类成人小视频在线| 亚洲男帅同性gay1069| 日韩一卡二卡三卡国产欧美| aaa欧美大片| 国产一区三区三区| 亚洲成人黄色小说| 国产精品美女久久久久aⅴ国产馆 国产精品美女久久久久av爽李琼 国产精品美女久久久久高潮 | 国产精品99久久久久| 亚洲精品国产成人久久av盗摄| 欧美一级xxx| 欧美性感一类影片在线播放| 激情久久五月天| 日韩精品电影一区亚洲| 国产精品第五页| 精品不卡在线视频| 欧美日韩一本到| 91久久精品一区二区三区| 国产精品99久久久久久宅男| 五月综合激情网| 一区二区免费看| 亚洲男人的天堂在线观看| 亚洲国产成人私人影院tom| www国产成人免费观看视频 深夜成人网| 色偷偷久久人人79超碰人人澡| 国产成人午夜高潮毛片| 久久精品理论片| 美日韩一区二区| 午夜精品福利在线| 石原莉奈在线亚洲二区| 亚洲综合免费观看高清完整版 |