亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

手把手教你 CKEDITOR 4 實現Dialog 內嵌 IFrame操作詳解

2019-11-19 11:19:06
字體:
來源:轉載
供稿:網友

本文實例講述了CKEDITOR 4 實現Dialog 內嵌 IFrame操作。分享給大家供大家參考,具體如下:

在上一篇博文《CKEDITOR 4 擴展插件制作》中,姜哥跟大家探討了在ckeditor中添加dialog,已經添加dialog的一些控件,最終將控件中的值插入到ckeditor編輯器中的過程。但是實際上,我們更多的應用,還是會在dialog中,添加iframe組件,直接引用外部網頁,以實現更為復雜的功能。今天姜哥就和大家一起分享一下,這個開發過程。

繼續我們上一個工程中的例子,我們是在contents中添加了elements,就像下面這樣:

      contents:           //每一個contents在對話框中都是一個tab頁      [        {          id: 'user',      //contents的id          label: 'You name',          title: 'You name',          elements:       //定義contents中的內容,我們這里放一個文本框,id是name          [            {              id: 'name',              type: 'text',              style: 'width: 50%;',              label: 'You name',            }          ]        }      ],

如果我們把elements中間的內容,換成iframe,會是什么樣呢?讓我們來看一看:

      contents:           //每一個contents在對話框中都是一個tab頁      [        {          id: 'user',      //contents的id          label: 'You name',          title: 'You name',          elements:          [            {              type: "html",              html: "<iframe id='myiframe' width='100%' height='100%' src='" + "http://www.163.com" + "'></iframe>",              style: "width:800px;height:580px;padding:0;"            }          ]        }      ],

在這里,我們描述了我們的elements的類型是html,接著我們插入了一段html代碼,也就是我們的iframe,將網易鏈接了進來,最后用style標簽定義了對話框的大小。保存之后,打開看看效果:

這里寫圖片描述

果然,我大“黃易”的首頁被載入進來了,看來這個路子可行!那接下來,我們可以試著載入自己的頁面了。在ckeditor_sample.html文件旁邊,再新建一個文件,叫做myiframe.html,類似這樣:

這里寫圖片描述

打開這個文件進行編輯,填入以下代碼,我們構建一個帶有輸入框和復選框的頁面:

<html>  <head></head>  <body>    <div>      姓名: <input type="text" id="username" name="username" value="" /> <br/>      <input type="checkbox" name="yourbook" value="C++">《C++ 從入門到放棄》</input>      <input type="checkbox" name="yourbook" value="headfirst">《HeadFirst 設計模式》</input>      <br />      <input type="checkbox" name="yourbook" value="Java">《Thinking in Java》</input>      <input type="checkbox" name="yourbook" value="django">《姜哥的Django匠人生活》</input>    </div>  </body></html>

然后把myplug.js中elements段的內容改成下面這樣,將iframe的src指向我們自己的創建的頁面:

      contents:           //每一個contents在對話框中都是一個tab頁      [        {          id: 'user',      //contents的id          label: 'You name',          title: 'You name',          elements:          [            {              type: "html",              html: "<iframe id='myiframe' width='100%' height='100%' src='" + "./myiframe.html" + "'></iframe>",              style: "width:800px;height:580px;padding:0;"            }          ]        }      ],

保存后打開看效果:

這里寫圖片描述

太棒了!頁面出來了,那么,我們怎么獲取獲取頁面上的輸入值和復選框的值呢?
還記得上一節,我們打的那些代碼中,那些onLoad,onShow之類的函數嗎?其實看名字,都可以知道,這些函數被觸發的時刻,當我們點擊“確定”按鈕的時候,會觸發onOk事件,同時自動調用onOk()函數,那我們就在onOk()里寫點兒代碼吧。

      onOk: function () {        var html = "";        var your_name = document.getElementById('myiframe').contentDocument.getElementById('username');        //使用JS最基礎的getElementById找到我們的iframe控件,然后再獲取id為username的控件        html = html + "<h2>" + your_name.value + ": </h2>";        var selected_books = document.getElementById('myiframe').contentDocument.getElementsByName('yourbook');        //使用JS最基礎的getElementById找到我們的iframe控件,然后再獲取所有name為yourBook的控件        var books = "";        for(var i=0; i< selected_books.length; i++){          //遍歷我們的selected數組          if (selected_books[i].checked){            books = books + "<p> " + selected_books[i].value + "</p>";          }        }        html = html + books;        editor.insertHtml(html);        this.commitContent();      },

我們用了最基礎的js語法,從dom對象中獲取我們想要的控件和控件中的值,學過js語法的同學應該一眼就看的出來,這個真的很簡單,讓我們來運行一下看看吧:

這里寫圖片描述

Oooooops!太糟糕了,居然又報錯了,F12打開的調試窗口中,可以看到我們這個的這個錯誤叫做:

Blocked a frame with origin "null" from accessing a cross-origin frame

錯誤的意思是:未捕獲的安全錯誤:阻止了一個域為null的frame頁面訪問另一個域為null的頁面。

姜哥給他翻譯成人話:其實是瀏覽器為了避免一種叫做“跨域攻擊”的黑客攻擊手段,阻止了兩個不同域名之間的dom操作。由于我們的頁面是本地打開的,瀏覽器中的地址欄是類似下面這種的本地地址,因此無法訪問iframe頁面中的值:file:///E:/%E6%96%B0%E5%BB%BA%E6%96%87%E4%BB%B6%E5%A4%B9/ckeditor_4.8.0_full/ckeditor_sample.html

怎么辦呢?其實一般小伙兒伴開發這個頁面,都是運行在一個工程里,或者一個項目里,本來就是運行在類似http://localhost/xxx這種網絡地址下的,不會有問題,但是我們現在是想調試下啊,怎么辦呢。。。

如果只是想調試學習一下,其實特別簡單,那就是――換一個瀏覽器!比如IE瀏覽器,就妥妥啦!

這里寫圖片描述

注意:這里不是說這段代碼在Chrome下無法運行,只是瀏覽器特性不同,chrome不允許這種不在同一個域名下的內嵌頁面通過dom接口來訪問,安全性比較高。換句話說就是,如果我們這段代碼是發布在一個網站上,比如你放在nginx里,瀏覽器通過http://localhost/ckeditor/ckeditor_sample.html這種方式去打開我們的頁面,就沒有問題了!

這里寫圖片描述

相當成功,對吧?讓我再次點擊我們的插件,發現了什么?對了!What the fuck!上次填入的內容居然還在里面!

這里寫圖片描述

腫么辦?還記得我們可以使用的函數嗎?對!我們可以用onHide()函數,在對話框關閉時,刷新一下myiframe.html,以保證下一次打開時,是一個全新的頁面:

      onHide: function () {        document.getElementById('myiframe').contentDocument.location.reload();      },

再次保存之后,嘗試一下,完全正常了。

今天我們學習了ckeditor自定義插件的高級用法,涉及到了從內嵌iframe取值的相關操作,也解釋了幾個常見的問題,希望對大家有所幫助。關于ckeditor的用法,暫時先探討到這里,下次有新的內容時,會再次續更。

完整實例代碼點擊此處本站下載。

更多關于JavaScript相關內容感興趣的讀者可查看本站專題:《JavaScript錯誤與調試技巧總結》、《JavaScript操作XML文件技巧總結》、《JavaScript中json操作技巧總結》、《JavaScript數據結構與算法技巧總結》、《JavaScript遍歷算法與技巧總結》及《JavaScript數學運算用法總結

希望本文所述對大家JavaScript程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久视频免费观看| 欧洲成人免费视频| 亚洲综合视频1区| 欧美黄色片在线观看| 国产精品极品在线| 国产亚洲欧洲高清一区| 日韩精品在线视频| 亚洲欧美一区二区精品久久久| 国产一区二区三区四区福利| 日本精品久久久久久久| 成人免费网站在线看| 国产欧美一区二区三区久久| 欧美性猛交xxxxx水多| 国产精品久久久久久久久久久久久| 亚洲国产97在线精品一区| 亚洲国产精品99| 国产一区视频在线| 国产精品视频xxxx| 欧美成人午夜剧场免费观看| 日韩电影中文字幕在线| 成人在线播放av| 美女久久久久久久久久久| 综合av色偷偷网| 俺去啦;欧美日韩| 国产精品日韩在线| 国产婷婷色综合av蜜臀av| 亚洲亚裔videos黑人hd| 亚洲欧美一区二区三区在线| 国产精品久久久久不卡| 欧美精品少妇videofree| 91美女片黄在线观| 琪琪第一精品导航| 色综合导航网站| 亚洲综合色激情五月| 亚洲自拍高清视频网站| 91福利视频在线观看| 欧美在线免费看| 成人免费福利视频| 国产成一区二区| 秋霞成人午夜鲁丝一区二区三区| 欧美理论在线观看| 日本成人在线视频网址| 日本中文字幕不卡免费| 精品一区二区三区三区| 亚洲国产成人一区| 一区二区三区无码高清视频| 欧美成人精品在线视频| 超薄丝袜一区二区| 中文字幕av一区中文字幕天堂| 欧美激情视频网| 免费91在线视频| 亚洲丝袜在线视频| 成人乱人伦精品视频在线观看| 国产成人精品一区二区| 久久亚洲精品国产亚洲老地址| 国产+人+亚洲| 8050国产精品久久久久久| 亚洲美女黄色片| 亚洲欧美成人在线| 九九热精品视频| 中文字幕精品—区二区| 国产一区二区色| 亚洲永久在线观看| 国内精品模特av私拍在线观看| 亚洲第一天堂av| 国产成人福利视频| 欧美成人在线免费视频| 日韩a**站在线观看| 亚洲国产欧美在线成人app| 欧美大码xxxx| 欧美一级免费视频| 中文字幕av一区中文字幕天堂| 成人免费网视频| 欧美日韩国产一区在线| 91系列在线播放| 日韩在线观看你懂的| 亚洲天堂av网| 久久久久久91| 伊人一区二区三区久久精品| 日韩免费在线电影| 日韩精品免费在线观看| 亚洲国产女人aaa毛片在线| 欧美日韩综合视频| 黑人巨大精品欧美一区二区一视频| 色av中文字幕一区| 欧美日韩激情小视频| 欧美日韩免费在线| 中文字幕日韩精品有码视频| 亚洲第一av在线| 一区二区三区回区在观看免费视频| 国产亚洲美女精品久久久| 日韩欧美在线免费| 欧美激情一级欧美精品| 久久久视频精品| 欧美精品情趣视频| 国产亚洲精品成人av久久ww| 亚洲精品91美女久久久久久久| 日韩不卡在线观看| 一区二区日韩精品| 亚洲人成网站免费播放| 国产99久久精品一区二区| 亚洲精品一区二区网址| 国产剧情日韩欧美| 欧美精品激情在线| 成人国产精品一区二区| 高潮白浆女日韩av免费看| 欧美成人午夜激情在线| 久久97久久97精品免视看| 国模视频一区二区三区| 日韩精品在线影院| 九九视频这里只有精品| 在线视频一区二区| 欧美成人午夜激情在线| 欧美在线视频免费| 成人精品视频久久久久| 亚洲精品电影在线| 高清欧美性猛交xxxx黑人猛交| 国产日韩精品入口| 久久久久久国产精品美女| 亚洲一区二区三区四区在线播放| 精品国产一区二区三区久久| 国产一区香蕉久久| 亚洲护士老师的毛茸茸最新章节| 狠狠躁天天躁日日躁欧美| 欧美极品第一页| 亚洲激情视频网| 日韩欧美一区二区三区久久| 国产精品91久久| 欧美最猛性xxxxx亚洲精品| 欧美激情视频在线观看| 亚洲国产精品va在线看黑人| 亚洲人成欧美中文字幕| www.欧美三级电影.com| 不用播放器成人网| 精品视频一区在线视频| 青草成人免费视频| 成人国产精品一区二区| 欧美性69xxxx肥| 5252色成人免费视频| 中文字幕亚洲无线码在线一区| 国产精品综合网站| 色偷偷88888欧美精品久久久| 中文字幕日韩免费视频| 欧美一区二区大胆人体摄影专业网站| 国产精品jizz在线观看麻豆| 欧美高清不卡在线| 久久久久久久爱| 欧美亚洲另类激情另类| 亚洲性生活视频| 国产精品吴梦梦| 伊人av综合网| 国产精品毛片a∨一区二区三区|国| 亚洲一区国产精品| 欧美激情视频网站| 久久精视频免费在线久久完整在线看| 久久久免费观看| 九九综合九九综合| 欧美日韩高清在线观看| 亚洲性日韩精品一区二区| 插插插亚洲综合网| 日韩经典一区二区三区| 久久免费精品日本久久中文字幕| 亚洲欧洲日韩国产| 久久99精品久久久久久噜噜|