English 中文(简体)
Monkey修补CKEditor以嵌入YouTube视频
原标题:Monkey patching CKEditor to embed YouTube videos

我正在尝试配置CKEditor,以便它可以直接嵌入YouTube视频。。。我看到有一个提出了补丁,但我想保持原始的CKEditor分发版本,所以我想知道是否有可能在运行时对CKEditor进行“猴子补丁”,这样,如果用户在Flash对话框中键入YouTube URL,URL就会被转换为允许嵌入。

我试过了:

CKEDITOR.on( dialogDefinition , function(ev){
    if (dialogName ==  flash ){
        var infotab = dialogDefinition.getContents( info );
        var f = dialogDefinition.onOk;
        dialogDefinition.onOk = function(ev) {
            var cur = this.getContentElement( info ,  src ).getValue();
            var newurl = cur.replace( youtube.com/watch?v= ,  youtube.com/v/ ); 
            if (cur != newurl) { 
                this.getContentElement( info ,  src ).setValue(newurl);
            };
            f(ev);
       }
    }
}

但它不起作用,因为在f内部,代码使用this,而我的“补丁”更改了它。。。

最佳回答

如果您将onOK附加到dialogDefinition的另一个属性,这个在其中是正确的(我认为)。

CKEDITOR.on( dialogDefinition , function(ev){
    if (dialogName ==  flash ){
        var infotab = dialogDefinition.getContents( info );
        dialogDefinition.oldOnOk = dialogDefinition.onOk; //change here
        dialogDefinition.onOk = function(ev) {
            var cur = this.getContentElement( info ,  src ).getValue();
            var newurl = cur.replace( youtube.com/watch?v= ,  youtube.com/v/ );
            if (cur != newurl) { 
                this.getContentElement( info ,  src ).setValue(newurl);
            };
           dialogDefinition.oldOnOk(ev); //and change here
       }
    }
}

或者使用函数.apply

CKEDITOR.on( dialogDefinition , function(ev){
    if (dialogName ==  flash ){
        var infotab = dialogDefinition.getContents( info );
        var f = dialogDefinition.onOk; 
        dialogDefinition.onOk = function(ev) {
            var cur = this.getContentElement( info ,  src ).getValue();
            var newurl = cur.replace( youtube.com/watch?v= ,  youtube.com/v/ );
            if (cur != newurl) { 
                this.getContentElement( info ,  src ).setValue(newurl);
            };                
            f.apply(this, ev);  //change here
       }
    }
}
问题回答

暂无回答




相关问题
selected text in iframe

How to get a selected text inside a iframe. I my page i m having a iframe which is editable true. So how can i get the selected text in that iframe.

How to fire event handlers on the link using javascript

I would like to click a link in my page using javascript. I would like to Fire event handlers on the link without navigating. How can this be done? This has to work both in firefox and Internet ...

How to Add script codes before the </body> tag ASP.NET

Heres the problem, In Masterpage, the google analytics code were pasted before the end of body tag. In ASPX page, I need to generate a script (google addItem tracker) using codebehind ClientScript ...

Clipboard access using Javascript - sans Flash?

Is there a reliable way to access the client machine s clipboard using Javascript? I continue to run into permissions issues when attempting to do this. How does Google Docs do this? Do they use ...

javascript debugging question

I have a large javascript which I didn t write but I need to use it and I m slowely going trough it trying to figure out what does it do and how, I m using alert to print out what it does but now I ...

Parsing date like twitter

I ve made a little forum and I want parse the date on newest posts like twitter, you know "posted 40 minutes ago ","posted 1 hour ago"... What s the best way ? Thanx.

热门标签