Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 6619507
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 25, 20262026-05-25T20:58:42+00:00 2026-05-25T20:58:42+00:00

In Facebook status update box, when I type @ and start typing and choose

  • 0

In Facebook status update box, when I type @ and start typing and choose a name, say Steven Gerrard, from the friends list suggested by fb, my friend’s name is highlighted in the textarea like this

textbox with name highlighted

I checked with Firebug and there’s only

  • a div.highlighter which contains sort of formated text (Steven Gerrard is within b tags)
  • a textarea inside a div.uiTypeahead. Nothing interesting i could find
  • and a hidden input, that contains the actual text that will be posted: @[100001915747xxx:Steven Gerrard] is awesome

What is the secret trick behind this? Normal rich text editors like ckeditor usually have an iframe to display the text and an actual textarea to keep the original content. But in this case, I do not see anything. Someone please shed some lights?

I would like to make something like this but have no clue where to begin. Also, if I would like to display a small thumb next to my friend’s name, is it possible at all?

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-25T20:58:42+00:00Added an answer on May 25, 2026 at 8:58 pm

    Here is how it works:

    • You superpose the textarea (in front) and a div (behind) that will have the same size, and the same font size.
    • The textarea must have a transparent background, so we can see its text, but also see the div behind it.
    • The div behind it will have a white text and white background, so the text it contains will be transparent.
    • You set a hook on the textarea’s keyup, and you process the text it contains as HTML: replace the line breaks by <br/>, replace the double spaces by &nbsp;&nbsp;, and also replace all the words that you want to highlight by a version surrounded by <span style=”background-color: #D8DFEA;”></span>.
    • Since you can see the highlight div behind the textarea, and that the text the highlight div contains is perfectly aligned with the text in the textarea, and that the <span> is visible, you will have the illusion that the text in the textarea is highlighted.

    I’ve written a quick example based on jquery so you can try it yourself, without too much code to analyze.


    Here is a sample code you can just copy-paste-save and try:

    This sample code will highlight a defined set of word, here: “hello” and “world”.

    I’ll let you adapt it the way you want.

    <html>
        <head>
            <title></title>
            <!-- Load jQuery -->
            <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js"></script>
            <!-- The javascript xontaining the plugin and the code to init the plugin -->
            <script type="text/javascript">
                $(function() {
                    // let's init the plugin, that we called "highlight".
                    // We will highlight the words "hello" and "world", 
                    // and set the input area to a widht and height of 500 and 250 respectively.
                    $("#container").highlight({
                        words:  ["hello","world"],
                        width:  500,
                        height: 250
                    });
                });
    
                // the plugin that would do the trick
                (function($){
                    $.fn.extend({
                        highlight: function() {
                            // the main class
                            var pluginClass = function() {};
                            // init the class
                            // Bootloader
                            pluginClass.prototype.__init = function (element) {
                                try {
                                    this.element = element;
                                } catch (err) {
                                    this.error(err);
                                }
                            };
                            // centralized error handler
                            pluginClass.prototype.error = function (e) {
                                // manage error and exceptions here
                                //console.info("error!",e);
                            };
                            // Centralized routing function
                            pluginClass.prototype.execute = function (fn, options) {
                                try {
                                    options = $.extend({},options);
                                    if (typeof(this[fn]) == "function") {
                                        var output = this[fn].apply(this, [options]);
                                    } else {
                                        this.error("undefined_function");
                                    }
                                } catch (err) {
                                    this.error(err);
                                }
                            };
                            // **********************
                            // Plugin Class starts here
                            // **********************
                            // init the component
                            pluginClass.prototype.init = function (options) {
                                try {
                                    // the element's reference ( $("#container") ) is stored into "this.element"
                                    var scope                   = this;
                                    this.options                = options;
    
                                    // just find the different elements we'll need
                                    this.highlighterContainer   = this.element.find('#highlighterContainer');
                                    this.inputContainer         = this.element.find('#inputContainer');
                                    this.textarea               = this.inputContainer.find('textarea');
                                    this.highlighter            = this.highlighterContainer.find('#highlighter');
    
                                    // apply the css
                                    this.element.css('position','relative');
    
                                    // place both the highlight container and the textarea container
                                    // on the same coordonate to superpose them.
                                    this.highlighterContainer.css({
                                        'position':         'absolute',
                                        'left':             '0',
                                        'top':              '0',
                                        'border':           '1px dashed #ff0000',
                                        'width':            this.options.width,
                                        'height':           this.options.height,
                                        'cursor':           'text'
                                    });
                                    this.inputContainer.css({
                                        'position':         'absolute',
                                        'left':             '0',
                                        'top':              '0',
                                        'border':           '1px solid #000000'
                                    });
                                    // now let's make sure the highlit div and the textarea will superpose,
                                    // by applying the same font size and stuffs.
                                    // the highlighter must have a white text so it will be invisible
                                    this.highlighter.css({
    
                                        'padding':          '7px',
                                        'color':            '#eeeeee',
                                        'background-color': '#ffffff',
                                        'margin':           '0px',
                                        'font-size':        '11px',
                                        'font-family':      '"lucida grande",tahoma,verdana,arial,sans-serif'
                                    });
                                    // the textarea must have a transparent background so we can see the highlight div behind it
                                    this.textarea.css({
                                        'background-color': 'transparent',
                                        'padding':          '5px',
                                        'margin':           '0px',
                                        'font-size':        '11px',
                                        'width':            this.options.width,
                                        'height':           this.options.height,
                                        'font-family':      '"lucida grande",tahoma,verdana,arial,sans-serif'
                                    });
    
                                    // apply the hooks
                                    this.highlighterContainer.bind('click', function() {
                                        scope.textarea.focus();
                                    });
                                    this.textarea.bind('keyup', function() {
                                        // when we type in the textarea, 
                                        // we want the text to be processed and re-injected into the div behind it.
                                        scope.applyText($(this).val());
                                    });
                                } catch (err) {
                                    this.error(err);
                                }
                                return true;
                            };
                            pluginClass.prototype.applyText = function (text) {
                                try {
                                    var scope                   = this;
    
                                    // parse the text:
                                    // replace all the line braks by <br/>, and all the double spaces by the html version &nbsp;
                                    text = this.replaceAll(text,'\n','<br/>');
                                    text = this.replaceAll(text,'  ','&nbsp;&nbsp;');
    
                                    // replace the words by a highlighted version of the words
                                    for (var i=0;i<this.options.words.length;i++) {
                                        text = this.replaceAll(text,this.options.words[i],'<span style="background-color: #D8DFEA;">'+this.options.words[i]+'</span>');
                                    }
    
                                    // re-inject the processed text into the div
                                    this.highlighter.html(text);
    
                                } catch (err) {
                                    this.error(err);
                                }
                                return true;
                            };
                            // "replace all" function
                            pluginClass.prototype.replaceAll = function(txt, replace, with_this) {
                                return txt.replace(new RegExp(replace, 'g'),with_this);
                            }
    
                            // don't worry about this part, it's just the required code for the plugin to hadle the methods and stuffs. Not relevant here.
                            //**********************
                            // process
                            var fn;
                            var options;
                            if (arguments.length == 0) {
                                fn = "init";
                                options = {};
                            } else if (arguments.length == 1 && typeof(arguments[0]) == 'object') {
                                fn = "init";
                                options = $.extend({},arguments[0]);
                            } else {
                                fn = arguments[0];
                                options = $.extend({},arguments[1]);
                            }
    
                            $.each(this, function(idx, item) {
                                // if the component is not yet existing, create it.
                                if ($(item).data('highlightPlugin') == null) {
                                    $(item).data('highlightPlugin', new pluginClass());
                                    $(item).data('highlightPlugin').__init($(item));
                                }
                                $(item).data('highlightPlugin').execute(fn, options);
                            });
                            return this;
                        }
                    });
    
                })(jQuery);
    
    
            </script>
        </head>
        <body>
    
            <div id="container">
                <div id="highlighterContainer">
                    <div id="highlighter">
    
                    </div>
                </div>
                <div id="inputContainer">
                    <textarea cols="30" rows="10">
    
                    </textarea>
                </div>
            </div>
    
        </body>
    </html>
    

    Let me know if you have any question or if you need help with this code.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

When I update status from facebook connect, following error occur Uncaught exception 'FacebookRestClientException' with
Facebook's status update input (well, contenteditable div) detects links. When typing a link it
I am updating facebook status with my feed update from my site, and facebook
Is there an easy way to update my Facebook status (What's on your mind?
I'm trying to create a div with contenteditable like the Facebook status update. Then
I am wondering if there is a script similar to the facebook status update
Help to understand why the third step (update status) fails: request_token (OK): GET:https://graph.facebook.com/oauth/authorize? client_id=XXX&
i am able to update user status using the following URL https://graph.facebook.com/944254185/feed?method=post& message=hello &access_token=4E35zZCu8xtLBExPJvbGCmYOXFOGe8P
How to use Facebook Connect in android to get permission from Facebook to update
I would like to create a similar system to the facebook status update using

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.