Rhs
Rhs

Reputation: 3318

AJAX Control Toolkit Control Editor Javascript Access

In my aspx, I have the following snippet of code, which correctly renders the Editor Control from the AjaxToolkit

<div>
    <ajaxToolkit:Editor ID="Editor" runat = "server" />
</div>

In C#, to access the content of the Editor is simply:

Editor.Content = "some text here"

However in JavaScript, I am unsure how to access this. So far, I have tried:

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

However the $find statement is returning a null value.

Upvotes: 0

Views: 939

Answers (2)

Rhs
Rhs

Reputation: 3318

After playing around with this feature, I noticed that the HTML looks like this:

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

In the ASPX, I did the following to make my life a litle bit easier:

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

By doing this, I have simplified my problem to become find the iFrame enclosed in myDiv, which contains the HTML of the editor.

To do that in the 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;

Now content contains, what I was looking for. This is kind of long, and there might be an easier way, but after searching for a solution, I found most of them to be:

do a .get_content or some function call, which didn't work for my case.

Upvotes: 0

Maxim Kornilov
Maxim Kornilov

Reputation: 6075

It should work. I tried the following code and editor component was found successfully.

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

So, try to access you editor in Sys.Application.add_load event handler. If this will help you then the cause of the problem is that you tries to find component before page completes component initialization.

Upvotes: 1

Related Questions