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

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

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

流程比較簡單,主要有以下步驟:

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

基于media插件代碼修改

注冊插件

首先,全局配置kindeditor參數:

KindEditor.lang({

 audio : 'MP3'

});

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

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

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

'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'

  ]

});

為了便于閱讀,我把audio按鈕放在最后,在 "幫助" 標簽的后面。

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

<style>

  .ke-icon-audio {

    background-position: 0px -528px;

    width: 16px;

    height: 16px;

  }

</style>

這里我圖方便,直接用了自帶的音視頻按鈕的圖標,自定義圖標請手動指定 background 樣式屬性。

最后,創建腳本

kindeditor/plugins/audio/audio.js

audio目錄手動建立。

我們把

plugins/media/media.js

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

修改media插件

主要是去掉一些無用的屬性,如 寬、高、自動播放等,并修改插入代碼的部分,手動構建 "audio" 標簽的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);

});

至此,整個插件基本結束。

需要注意的是,上傳文件用的是通用的配置uploadJson參數,但會在上傳的時候自動添加一個get參數 "dir=audio" ,以便后臺識別:

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

更多信息請查看網絡編程
由于各方面情況的不斷調整與變化,易賢網提供的所有考試信息和咨詢回復僅供參考,敬請考生以權威部門公布的正式信息和咨詢為準!

2026上岸·考公考編培訓報班

  • 報班類型
  • 姓名
  • 手機號
  • 驗證碼
關于我們 | 聯系我們 | 人才招聘 | 網站聲明 | 網站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 新媒體/短視頻平臺 | 手機站點 | 投訴建議
工業和信息化部備案號:滇ICP備2023014141號-1 云南省教育廳備案號:云教ICP備0901021 滇公網安備53010202001879號 人力資源服務許可證:(云)人服證字(2023)第0102001523號
云南網警備案專用圖標
聯系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關注公眾號:hfpxwx
咨詢QQ:1093837350(9:00—18:00)版權所有:易賢網
云南網警報警專用圖標
中文字幕免费精品_亚洲视频自拍_亚洲综合国产激情另类一区_色综合咪咪久久
欧美gay视频| 欧美一级淫片aaaaaaa视频| 一本色道久久综合狠狠躁篇的优点 | 久久久久久国产精品mv| 国产日韩视频| 美女国产一区| 亚洲欧美日韩国产综合在线| 伊人蜜桃色噜噜激情综合| 欧美激情bt| 香蕉精品999视频一区二区| 最近中文字幕日韩精品| 国产精品免费在线| 久久综合给合| 欧美一级黄色网| 一区二区三区视频在线播放| 激情成人中文字幕| 国产精品美女久久久久av超清| 久久久久久久久岛国免费| 中文国产成人精品| 亚洲日韩成人| 亚洲日本理论电影| 尤物视频一区二区| 国产一区二区三区成人欧美日韩在线观看 | 欧美在线免费| 亚洲女与黑人做爰| 亚洲图中文字幕| 中国成人在线视频| 亚洲精品视频中文字幕| 亚洲高清精品中出| 亚洲精品小视频| 亚洲精品中文字| 一区二区三区产品免费精品久久75 | 欧美成va人片在线观看| 亚洲欧美在线一区| 久久精品国产清高在天天线| 久久精品国产精品亚洲精品| 欧美在线视频一区| 亚洲欧美日韩高清| 久久aⅴ国产欧美74aaa| 久久久久久国产精品mv| 欧美成人免费视频| 欧美日韩视频第一区| 国产精品丝袜xxxxxxx| 国产一区二区三区不卡在线观看| 国产精自产拍久久久久久| 狠狠色狠狠色综合人人| 亚洲日韩成人| 性久久久久久久久久久久| 久久在线视频| 国产精品免费区二区三区观看| 久久免费国产精品1| 欧美女人交a| 黄色国产精品一区二区三区| 亚洲美女在线视频| 久久久综合免费视频| 国产精品嫩草久久久久| 亚洲欧洲一区二区天堂久久| 欧美一区2区三区4区公司二百| 免费成人高清| 国产一区二区三区免费观看| 亚洲无玛一区| 国产精品成人v| 一区二区三区免费观看| 欧美精品久久一区| 亚洲精品久久在线| 欧美极品在线观看| 亚洲国产欧美日韩| 欧美激情第二页| 日韩一级片网址| 欧美日韩mv| 性欧美大战久久久久久久久| 国产麻豆综合| 久久婷婷丁香| 亚洲人成网站777色婷婷| 欧美激情一区二区三区不卡| 日韩视频不卡| 国产精品人成在线观看免费| 在线亚洲免费视频| 国产精品高潮久久| 小嫩嫩精品导航| 伊人男人综合视频网| 欧美激情一二三区| 亚洲已满18点击进入久久| 国产欧美亚洲一区| 欧美搞黄网站| 午夜精品理论片| 91久久国产精品91久久性色| 欧美日韩国产专区| 亚洲综合色自拍一区| 一区免费观看| 欧美三级电影大全| 久久亚洲二区| 欧美一区二区在线视频| 亚洲二区在线| 国产有码一区二区| 国产精品成人一区二区三区吃奶| 久久精品免费看| 中文av一区二区| 曰本成人黄色| 国产色综合久久| 久久在线播放| 亚洲影院一区| 一区二区三区av| 99精品欧美一区二区三区综合在线| 国产精品一区二区你懂得| 欧美日本一区二区视频在线观看| 美女亚洲精品| 久久夜色精品国产亚洲aⅴ| 亚洲欧美日韩精品久久亚洲区| 一本色道久久综合狠狠躁篇怎么玩| 伊人一区二区三区久久精品| 国产色综合天天综合网| 国产午夜精品久久久久久久| 国产欧美一区二区色老头| 国产麻豆精品theporn| 国产欧美日韩综合精品二区| 国产一区二区三区在线观看精品| 狠狠色狠狠色综合日日tαg| 国产精品毛片一区二区三区 | 亚洲主播在线| 久久精品亚洲一区二区三区浴池 | 91久久精品日日躁夜夜躁欧美| 国内精品久久久久久影视8| 黄色一区二区在线| 亚洲激情中文1区| 亚洲国产精品专区久久| 亚洲黄色成人久久久| 一区二区自拍| 亚洲精品一区在线观看| 亚洲性感激情| 欧美黄色片免费观看| 国产日韩精品在线观看| 亚洲精品国产精品国自产观看浪潮 | 国产字幕视频一区二区| 国产一区二区三区精品久久久| 国产一区在线看| 亚洲精品社区| 久久成人一区二区| 欧美大片在线观看一区二区| 欧美日韩一区免费| 尤物视频一区二区| 亚洲伊人伊色伊影伊综合网| 欧美一区91| 欧美日韩国产小视频在线观看| 国产精品久久毛片a| 欧美午夜不卡视频| 国产亚洲福利| 99日韩精品| 久久久久国内| 国产精品看片资源| 亚洲精品乱码久久久久久蜜桃91| 亚洲欧美另类在线| 欧美日韩国语| 91久久在线播放| 免费成人av在线| 国产精品观看| 亚洲在线第一页| 国产精品白丝av嫩草影院| 亚洲日本成人网| 国产欧美日韩视频| 亚洲欧美在线一区| 国产日韩亚洲欧美综合| 欧美在线3区| 亚洲视频播放| 国产精品有限公司| 欧美一区二区三区在线播放| 精品盗摄一区二区三区| 久久中文精品| 99视频+国产日韩欧美| 国产精品ⅴa在线观看h| 亚洲综合另类| 亚洲第一精品夜夜躁人人爽| 欧美大香线蕉线伊人久久国产精品| 欧美不卡在线视频| 欧美女同视频| 亚洲欧洲久久| 国产精品看片你懂得| 欧美精品日韩一本| 欧美一级淫片aaaaaaa视频| 狠狠色丁香婷婷综合| 久久综合久久综合九色| 久久国产精品久久久久久| 国产在线观看一区| 欧美福利小视频| 黄色亚洲大片免费在线观看| 午夜老司机精品| 亚洲黄色一区二区三区| 1024精品一区二区三区| 国产精品嫩草影院一区二区| 欧美成人一二三| 欧美淫片网站| 久久香蕉精品| 久久久久高清| 欧美一区二区视频免费观看| 亚洲国产精品久久人人爱蜜臀| 亚洲精品国产无天堂网2021| 激情av一区二区| 伊人夜夜躁av伊人久久| 亚洲第一福利在线观看| 亚洲国产精品999|