www.webdeveloper.com
Results 1 to 6 of 6

Thread: event.srcElement.id

  1. #1
    Join Date
    Sep 2003
    Location
    Utah
    Posts
    396

    event.srcElement.id

    I have a function that looks at the id of the event srcElement. I am having a problem with this when I try to get the function to run by clicking a link in a child window. The function chokes on this line:

    alert(event.srcElement.id)

    I assume that is because the event is coming from a child window. Is there anyway I can check if the last event came from a child window so I can prevent the error.

  2. #2
    Join Date
    May 2006
    Location
    Odenton, MD
    Posts
    1,449
    where is defined the handler? main window? if handler is defined on main window, then yes, problem is that child window don't know where is defined the handler. or maybe is the way you're registering the handler to the event:
    HTML Code:
    <a id='non' href='' onclick='alert(event.srcElement.id)'>link</a>
    this might work no matter which window, main or child, because handler is registered directly to the element. if you're using a function as handler you have two option: set the funcion on child window, or callback the main window to use the function.

    HTML Code:
    callback from child window:
    <a href='' id='non' onclick='window.opener.[i]function_name[/i]();'>link</a>
    i had not tested that solution, but i'm guessing it wouldn't work. the other option work for sure, just declare the function on the child window. however, be aware that event object is msie only. for others browsers you may use standard event.
    Last edited by ZeroKilled; 12-13-2007 at 07:35 PM.

  3. #3
    Join Date
    Sep 2003
    Location
    Utah
    Posts
    396
    Here is a very simplified version of what I am trying to do. The following function is in .js file used by the parent page:

    function alertHandler() {
    alert(event.srcElement.id);
    }

    Then, in my child window, I have a link that looks like this:

    <a onClick="alertHandler();" href="javascript:void(0)" id="rp94_1_1_1">repeat topic</a>

    When I click it, I get an Object required error.

    I thought, well fine, I'll just edit to this:

    function alertHandler() {
    if(window.event.srcElement.id) {
    alert(event.srcElement.id);
    }
    }

    Sadly, that still generates the same error.

  4. #4
    Join Date
    May 2006
    Location
    Odenton, MD
    Posts
    1,449
    as i had said before, error occur because you're trying to trigger a handler that isn't defined at the child window. so, the funcion alertHandler is defined on the parent and child window doesn't inherit directly the content of the parent. in order to a child window call a funcion defined on parent you need to callback the parent window with the opener property, which become a reference to the window that opened the child:

    HTML Code:
    <a ... onclick='opener.alertHandler();'>...</a>
    however, as i had stated before. the function might not work because statement refer to object or property where they where defined, not where they're called. what i mean is, when you click the link, the statement event.scrElement.id refer to the event object of the main window, not of the child window. you can check it by alerting the event object which will return an null value. that is because an event has not occured on the main window.

    a better solution. instead of having a function that depend on the event object, you can pass a reference of the element to the handler:
    HTML Code:
    <a ... onclick='opener.alertHandler(this);'>link</a>
    Code:
    function alertHandler(elem){
    alert(elem.id);
    }
    now function doesn't depend on msie propietary object, hence is compatible with most javascript capable browser.
    Last edited by ZeroKilled; 12-13-2007 at 08:28 PM.

  5. #5
    Join Date
    Sep 2003
    Location
    Utah
    Posts
    396
    Thanks for the help. My site is an intranet site where all users have nothing but IE, so I don't worry too much about using IE-only stuff. The code I posted above was just a very small sample of a very large function. However, I knew if I could fix the error in the small version, it would solve my problem. I was able to get it to work by changing this:

    function alertHandler() {
    if(window.event.srcElement.id) {
    alert(event.srcElement.id);
    }
    }

    to:

    function alertHandler() {
    if(window.event) {
    alert(event.srcElement.id);
    }
    }

    Thanks again for your suggestions.

  6. #6
    Join Date
    May 2012
    Location
    chennai
    Posts
    2

    Smile

    I need to create right click options of my own but i cannot able to do that using java script is that possible to do that in javascript? anyone please help me to do ..........

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
HTML5 Development Center



Recent Articles