AJAX控制工具包控制编辑器JavaScript访问



在我的aspx中,我有以下代码段,它可以正确地从ajaxtool

呈现编辑器控件
<div>
    <ajaxToolkit:Editor ID="Editor" runat = "server" />
</div>

在C#中,访问编辑器的内容只是:

Editor.Content = "some text here"

但是,在JavaScript中,我不确定如何访问它。到目前为止,我已经尝试了:

var st =$find('<%=Editor.ClientID%>').get_content();

但是,$查找语句正在返回零值。

它应该起作用。我尝试了以下代码,并成功找到了编辑器组件。

<asp:ScriptManager runat="server" ID="ScriptManager" EnablePartialRendering="true">
    <Scripts>
        <asp:ScriptReference Path="Scripts/jquery-1.4.1.js" />
    </Scripts>
</asp:ScriptManager>
<div>
    <ajax:Editor runat="server" ID="Editor"></ajax:Editor>
</div>
<script type="text/javascript">
    Sys.Application.add_load(function() {
        Sys.Debug.traceDump($find('<%= Editor.ClientID %>'), "editor");
    });
</script>

因此,尝试在sys.application.add_load事件处理程序中访问您的编辑器。如果这对您有所帮助,那么问题的原因是您在页面完成组件初始化之前尝试查找组件。

在使用此功能后,我注意到HTML看起来像这样:

<iframe id = "Some iFrameId">
    #document
    <html>
        <head>...</head>
        <body>The text of the editor</body>
    </html>
 </iframe>

在ASPX中,我做了以下操作,使我的生活变得更加轻松:

<div id ="myDiv" ClientIDMode="Static">
    <ajaxToolkit:Editor ID="Editor" runat = "server" />
</div>

这样做,我简化了我的问题,以找到MyDiv中包含的iframe,其中包含编辑器的HTML。

在JS

中这样做
//get the iFrame
var myIframe = $("#myDiv, iframe") //this returns an array and myIframe[1] is the iFrame, which contains the text.
//get the HTML from the iFrame
var content = myIFrame[1].contentWindow.document.body.innerHTML;

现在的内容包含我想要的内容。这很长,可能会有一种更简单的方法,但是在搜索解决方案之后,我发现其中大多数是:

做一个.get_content或某些功能调用,这对我的情况不起作用。

最新更新