asp.net - 通过代码隐藏将文本插入 CKEditor

标签 asp.net vb.net ckeditor

我试图让 CKEditor.NET 在页面加载时将一些文本插入到我的 CKEditor 中。

    Private Sub CKEditor_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles myCKEditor.Load

        Dim insertScript As String
        insertScript = "<script type=""text/javascript"">window.CKEDITOR.instances.myWidget_myCKEditor.insertText(""test"");</script>"

        Dim cManager As ClientScriptManager = Parent.Page.ClientScript

        cManager.RegisterStartupScript(Me.GetType, "insertText", insertScript)

    End Sub

我的页面组织如下:

  • myPage (aspx)
    • myWidget (ascx)
      • myCKEditor(来自程序集)

我收到以下错误:

类型错误:无法读取未定义的属性“实例”

调用此函数时,CKEDITOR 似乎不存在。如果我打开 JS 控制台并运行 insertScript ,它就会按预期工作。

我尝试将此例程附加到 MyBase.LoadMe.Load 也无济于事,甚至尝试使用 window.Load = insertScript,所有这些都会产生相同的错误。

我注意到,无论我做什么,源代码中的最后都是初始化CKEditor的脚本,即

....
<script type="text/javascript">window.CKEDITOR.instances.myWidget_myCKEditor.insertText("test");</script>
<script type="text/javascript">
//<![CDATA[
window.CKEDITOR_BASEPATH = '/ckeditor/';
//]]>
</script>
<script src="/ckeditor/ckeditor.js?t=C6HH5UF" type="text/javascript"></script>
<script type="text/javascript">
//<![CDATA[
var CKEditor_Controls=[],CKEditor_Init=[];function CKEditor_TextBoxEncode(d,e){var f;if(typeof CKEDITOR=='undefined'||typeof CKEDITOR.instances[d]=='undefined'){f=document.getElementById(d);if(f)f.value=f.value.replace(/</g,'&lt;').replace(/>/g,'&gt;');}else{var g=CKEDITOR.instances[d];if(e&&(typeof Page_BlockSubmit=='undefined'||!Page_BlockSubmit)){g.destroy();f=document.getElementById(d);if(f)f.style.visibility='hidden';}else g.updateElement();}};(function(){if(typeof CKEDITOR!='undefined'){var d=document.getElementById('myWidget_myCKEditor');if(d)d.style.visibility='hidden';}var e=function(){var f=CKEditor_Controls,g=CKEditor_Init,h=window.pageLoad,i=function(){for(var j=f.length;j--;){var k=document.getElementById(f[j]);if(k&&k.value&&(k.value.indexOf('<')==-1||k.value.indexOf('>')==-1))k.value=k.value.replace(/&lt;/g,'<').replace(/&gt;/g,'>').replace(/&amp;/g,'&');}if(typeof CKEDITOR!='undefined')for(var j=0;j<g.length;j++)g[j].call(this);};window.pageLoad=function(j,k){if(k.get_isPartialLoad())setTimeout(i,0);if(h&&typeof h=='function')h.call(this,j,k);};if(typeof Page_ClientValidate=='function'&&typeof CKEDITOR!='undefined')Page_ClientValidate=CKEDITOR.tools.override(Page_ClientValidate,function(j){return function(){for(var k in CKEDITOR.instances){if(document.getElementById(k))CKEDITOR.instances[k].updateElement();}return j.apply(this,arguments);};});setTimeout(i,0);};if(typeof Sys!='undefined'&&typeof Sys.Application!='undefined')Sys.Application.add_load(e);if(window.addEventListener)window.addEventListener('load',e,false);else if(window.attachEvent)window.attachEvent('onload',e);})();CKEditor_Controls.push('myWidget_myCKEditor');
CKEditor_Init.push(function(){if(typeof CKEDITOR.instances['myWidget_myCKEditor']!='undefined' || !document.getElementById('myWidget_myCKEditor')) return;CKEDITOR.replace('myWidget_myCKEditor',{"htmlEncodeOutput" : true}); });
//]]>
</script>
</form>
 ....

所有证据都表明我在错误的时间调用启动脚本,但我不知道何时是调用它的“正确时间”。

最佳答案

Yoy 可以使用 jquery windows.ready 函数,如下所示

insertScript = "<script type=""text/javascript"">   <script language="javascript">
        $(document).ready(function() {
           window.CKEDITOR.instances.myWidget_myCKEditor.insertText('test');
            })
        })
</script> ";

    Dim cManager As ClientScriptManager = Parent.Page.ClientScript

    cManager.RegisterStartupScript(Me.GetType, "insertText", insertScript) 

它将确保您的 JavaScript 仅在文档​​准备好时才触发,而不是 b4。

关于asp.net - 通过代码隐藏将文本插入 CKEditor,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16557372/

相关文章:

asp.net - 设计师坚持使用 'System.Web.UI.WebControls' ,但该值不存在

.net - 在 asp.net 应用程序中,我应该在哪里将 generatePublisherEvidence 设置为 false?

sql - 获取 SQL 服务器组中可用服务器的列表

vb.net - 在主线程上使用句柄运行 Sub

ckeditor - 关闭 CKEditor 的自动更正设置

asp.net - 在 c#/.net 4 中打开 FileTable 文件

jquery - ajax调用成功后如何使用数据

javascript - CKEditor - 将上下文菜单项添加到图像

asp.net - VB.NET 接口(interface)

javascript - IE 中具有不同配置文件的多个 CKEDITOR 实例损坏