Event Handlers, OO And Function Context
Sep 11, 2007
I am writing a javascript code that parses dom and finds event
handlers attached to mouseover events. Then i will replace the
existing handler say B() with my own function say A(). When the event
happen and control comes to my function A(), after doing required
processing i will call B() as shown below
<a href = "abc.com" mouseover = "B();"link </a>
while parsing i will have (trimmed down version)
var oldHandler = node.onmouseover;
node.
function A()
{
/ * my code */
oldHandler.call(this);
}
This was working fine as long as B() was a global function. I started
getting problems when B was a member function. For eg:
function Alerter(text)
{
this.text=text;
var me=this;
this.invoke=function ()
{
alert(this.text);
}
}
var sayHi = new Alerter('Hello, world!');
The web developer would have code like
<a href = "abc.com" mouseover = "sayHi.invoke()"link </a>
But this time around, my function A() fails since although i have
handler to sayHi.invoke(), it has to be executed in correct context.
Other wise "this.text" is giving me error because when i say
oldHandler.call(this), i am executing the sayHi.invoke() with the html
element being passed as this.
View 2 Replies
ADVERTISEMENT
Jul 20, 2005
What is the evaluation context of the setTimeout args below? I have a separate Timer instance for each sprite in my program. As coded, "this.Clock" doesn't work.
/*================================================= ===
Timer.js
================================================== ==*/
function Timer(_sprite, _interval) {
var sprite = _sprite;
var interval = _interval;
var isRunning = false;
var timeoutID = false;
this.Clock = function() { // called after setTimout interval
if (isRunning) {
isRunning = sprite.OnClockTick();
if (isRunning)
timeoutID = window.setTimeout("this.Clock()", interval);
else
this.Stop();
}
}
this.Stop = function() {
if (timeoutID) {
window.clearTimeout(timeoutID);
timeoutID = false;
};
isRunning = false;
}
this.SetInterval = function(_interval) {
this.Stop();
interval = _interval;
isRunning = true;
timeoutID = window.setTimeout("this.Clock()",interval);
}
this.Continue = function() {
if (!isRunning) {
isRunning = true;
timeoutID = window.setTimeout("this.Clock()",interval);
}
}
}
--
Don't you see that the whole aim of Newspeak is to narrow the range of thought? In the end we shall make thoughtcrime literally impossible, because there will be no words in which to express it.
View 9 Replies
View Related
Jul 23, 2005
Sorry for the re-post but the original message subject no longer
applies. If I try this in IE5, it doesn't work:
<script type="text/javascript">
window.onload = foo;
</script>
<body>
whereas this does work:
<body onload="javascript:foo();">
This is not the way I want to handle events. I checked MSDN and it seems
to indicate that the first way should work. Is there something I can do
to get the first way (event handlers?) to work in IE5?
View 4 Replies
View Related
Jul 20, 2005
Can I use CSS to set onmouseover ?
In HTML I have a bunch of <A HREF="whatever"
onmouseover=eventhandler(this)">stuff</A>. I would prefer not to have the
onmouseover 'pollution'
Is it possible to specify the eventhandler using css ? i.e.
<A HREF="whatever" class="foo">stuff</A>.
View 3 Replies
View Related
Jul 23, 2005
I have a script in which a function launched by a START button
continuously calculates and writes a value to a text box. The
calculation is done in a for loop. In the loop is a conditional that is
a global variable, a boolean. If the boolean is true, break ends the
loop (or is supposed to!). A STOP button has an onclick function that
sets the global variable to true.
What happens, though, is that the function for the STOP button is
not executed until the for loop reaches the maximum value set for i.
Anyone know how you can get one button to stop a process started by
another?
View 4 Replies
View Related
Apr 18, 2006
Is it necessary to return a value from the event handlers? For
instance, what does the return value in the following code signify?
What will be its impact if it returned otherwise (true)?
<a href="http://www.w3schools.com"
onmouseover="alert('An onMouseOver event'); return true">
<img src="Click.gif" width="100" height="30">
</a>
View 9 Replies
View Related
Jun 1, 2006
Here is a little sample code:
<html>
<head>
<script type="text/javascript">
function BodyClick() {
// How to access the event object here?
alert(window.event.shiftKey);
}
function WindowLoad() {
document.body.onclick = BodyClick;
}
window.onload = WindowLoad;
</script>
</head>
<body></body>
</html>
It does not work in FireFox. How to make it work?
My only requirement is that I need to assign the BodyClick() handler
dynamically in script (not statically in HTML). So I cannot use this solution:
<body onclick="BodyClick(event)">
View 1 Replies
View Related
Feb 9, 2011
I've been teaching myself javascript and I'm a bit confused about the whole events business. I've been reading the Sitepoint book (among a bunch of others) and when it gets to Ch 4 things get down right confusing. They claim that inline event handlers are "so 1998", something I've heard before and then they proceed to write some pretty complex library files to get around the fact that IE <= 7 doesn't support much of the alternative ways of handling events--a familiar enough story. Anyhow, it seems that many many tutorials all over the internet (and countless pages) resort to inline event handlers as the standard. So, I'm confused. I obviously need to know inline event handlers if I intend to work as a web developer even though it's so 1998. Obviously inline even handlers are not quite on par with inline font attributes and transparent gif files despite the language one often hears. Can someone set me straight, and if possible suggest a brilliant tutorial, book chapter, or website that lays everything crystal clear for me?
View 14 Replies
View Related
Dec 2, 2005
I wanted to add a onclick event handler to an image in a loop cos I have a dynamic number of images. The problem is I also need to pass a parameter. This works in Opera 8, but doesn't work in IE:
document.images[i].onclick = "javscript: ShowDesc(" + i + ");";
What am I missing?
View 13 Replies
View Related
Jul 15, 2006
I've been reading this page on accessing event handlers and avoiding the inline ones. Suppose I want to hover over a link and make it display something else, I thought this is what I would put in the <head>:
<script type="text/javascript">
var x = document.getElementById('question');
x.onmouseover = function() {document.getElementById('answer').style.display='inline'}
x.onmouseout = function() {document.getElementById('answer').style.display='none'}
</script>
The HTML being:
<a id="question" href="#">Question</a>
<span id="answer" style="display:none;">The answer is 42</span>
I've reread the article in the link but to no avail, I don't know what is wrong.
View 4 Replies
View Related
Jul 23, 2005
Does Event handlers work in netscape.
<HTML><SCRIPT LANGUAGE="JScript">
function mouseclick() {
alert("I was clicked on " + window.event.srcElement.tagName);
}
</SCRIPT>
<BODY
<H1>Welcome!</H1>
<P>This is a very <B>short</B> document.
</BODY>
</HTML>
The above script works fine in IE But not in Netscape 7.2 :((
View 9 Replies
View Related
Jul 23, 2005
I have written a script that gets trigered by IE's toolbar button. In
this script I would like to asign an event handler to an element of the
document currently open in IE. The way one access the document object
from a toolbar button script is:
var doc = external.menuArguments.document;
Now assuming the document has an element called TextArea1, the logical
thing to do would be:
parentwin.document.all('TextArea1').onkeypress = new
Function('window.alert('asdf');');
Which goes compiles and runs, except the event handler does not get
triggered.
Another trick i tried is as follows:
var s = parentwin.document.createElement('script');
s.text = 'window.alert('asdf')'
s.htmlFor = 'TextArea1'
s.event = 'onclick'
parentwin.document.scripts[0] = s;
Same result.
View 1 Replies
View Related
Aug 9, 2005
I want to build a table that knows where it has been clicked. I found the
following solution myself. Are there better ones?
http://www.student.oulu.fi/~pkarjala/question1.html
(tested on Mozilla 1.7.8/Linux)
It sets the event handlers for each TD in the build() loop, including a
parameter in the function call that is different for each TD.
The whole thing is a simple example with a table with 5 by 5 cells. If you
click on a cell it's supposed to change color. Naturally, my question is
one more general terms. How to make big tables that associate various
event handlers with various cells, and where you will know exactly which
element triggered the event? How to make it simple and maintainable?
View 4 Replies
View Related
Jan 22, 2011
I want to create a HTML Table and correspondingly have 2 buttons. One would be add button and other would be remove button. I have few text boxes where I will fill the data and later on clicking Add these text boxes details would be added to the Table. I am using javascript code to handle the event (on click event handler) Similarly I wanted to delete an entry from the table. This is where I am having a problem. The requirement is: In the table if I click on any row I want that row to be highlighted. I can use any color to highlight the row. Then on clicking Remove Button I want to delete that row that is highlighted. I am unable to solve this as I dont know what event handler to use to perform this action and also how to code for this. I am not sure about the events the HTML table can handle and how the selected row can be deleted.
View 1 Replies
View Related
May 27, 2009
When I register an event handler directly into the HTML tag everything works fine, but I'm trying to register them from the external JS file where the function is, and that doesn't work at all. I've read that this is called the "traditional method" and that it should work.
I've tried it a million different ways, but what I'm putting below AFAIK is correct... but it just doesn't work. I've tried it in Firefox, IE, and Chrome - and used the "Inspect element" feature in Chrome, and am not getting any error messages.
Here is just a simple example of what I'm trying to do - its extremely basic, I know, but I just can't figure out why it won't work.
HTML:
JS:
(Again, it works perfectly when I stick the onclick="message()" event handler directly into the HTML h1 tag, but not when in the external file.)
View 4 Replies
View Related
Jun 2, 2010
I am trying to add onclick event handler to many objects but I can't understand why it doesn't work. To assign event handler I use traditional approach as described in [URL]Heres the code (extract.js):
Code JavaScript:
//the class
function extract(){
[code]....
I know that both select tags don't have options, but I generate them with JS because they hold sequential numbers and this part has no impact on the problem at hand.Both functions help select next or previous index in a given select tag for greater comfort
View 5 Replies
View Related
Mar 7, 2011
I'm trying to figure out a way to put this in all js code with the onclick event handlers and the parameters. I have 3 links that switch the style of my page. Right now I have them working with inline event handlers. Here are my code snippets below.
HTML:
<head>
<link rel="stylesheet" href="style1.css" type="text/css" title="style1"/>
{code}....
View 1 Replies
View Related
Aug 2, 2010
I'm trying to create links that onclick sort a table by title, author, etc. How would I pass an argument to an event handler? Right now, it just executes the sort function. It doesn't wait for me to click the link.
[Code]...
View 2 Replies
View Related
Jan 22, 2011
I am new to HTML and I am finding HTML and javascript extremely interesting. I have a problem at hand and I wanted to know how to solve it. I want to create a HTML Table and correspondingly have 2 buttons. One would be add button and other would be remove button. I have few text boxes where I will fill the data and later on clicking Add these text boxes details would be added to the Table. I am using javascript code to handle the event (on click event handler) Similarly I wanted to delete an entry from the table. This is where I am having a problem. The requirement is: In the table if I click on any row I want that row to be highlighted. I can use any color to highlight the row. Then on clicking Remove Button I want to delete that row that is highlighted. I am unable to solve this as I dont know what event handler to use to perform this action and also how to code for this. I am not sure about the events the HTML table can handle and how the selected row can be deleted.
View 1 Replies
View Related
Jan 25, 2010
I'm trying to retrieve the "onchange" event handler for a Select that I've retrieved via a call to getElementById() and when I view the element in FireBug there is no value for onchange.
I know the handler is part of the Object because it runs like it is supposed to earlier in my program run, but when I try to retrieve it later through the getElementById(), it's not there.
Do the event handlers get passed with the getElementById() call?
View 3 Replies
View Related
Jun 26, 2010
I have some code that's a more involved version of this:
$('#container_div').delegate('.trigger_button', 'click', function() {
$.post('handler.php',
{ id: $(this).siblings('.item_id').val() },
function(data) {
[Code].....
Normally, when I use .post in an event handler, "this" refers to the object that triggered the event. That doesn't happen in this case. When I use "this" the first time, to pull data parameters, it refers to the .trigger_button. But inside the .post callback, it refers to the AJAX call object instead. I don't think that's how it's supposed to work, is it? Is this a bug?
View 1 Replies
View Related
Jul 23, 2005
I recently "inherited" a project which involves an applet on a web
page, and some Javascript event handling functions. The handler definition looks
like this:
<SCRIPT LANGUAGE=javascript FOR=Foo EVENT=mouseReleased>
<!--
Foo_mouseReleased();
//-->
</SCRIPT>
where Foo is an applet with parameter FiresScriptEvents set to TRUE.
The function Foo_mouseReleased() is a simple javascript function that just
alerts a fixed message so I know it's been called.
When I run this applet in a vanilla IE5.5 or IE6, it does exactly what
I expect - when the mouse is released, up pops my alert. BUT when I
run it on the same browser with Java Plug-In 1.4.2 installed, I don't
see it. Is there some compatibility issue with 1.4.x? Can the code be
changed relatively simply to work with both VMs, or am I looking at a
big rebuild to support browsers both with and without the plug-in?
View 2 Replies
View Related
Feb 27, 2007
THE QUESTION: How do I get a reference to my Object when processing an
event handler bound to an html element ?
CONTEXT:
Sorry if it is a bit long.
I am developing a JS calendar tool. One of the requirements is that the
calendar will need to display a varying number of months (1..3)
depending on the calling page. Imagine 1, 2 or 3 calendar pages side by
side as required.
I have built a grid object that will contain one month's dates with the
day names at the top. The calendar object inherits the grid object as an
array of "calendar pages" - one grid per month and the calendar provides
the content for each grid. I will use the grid object for another
completely different object later and so I want to use good OOP
encapsulation. The grid is a table generated on the fly and is "dumb" as
far as what it is used for.
I have attached an onlick event to each cell of the grid. Using OOP
priciples I want the calling program (the calendar object in this case)
to provide a function to handle the click and the grid object will
provide to the calendar the row and column of that cell as well as the
grid number (so the calendar can work out which date was clicked since
it knows what the data means and the grid doesnt). Code:
View 6 Replies
View Related
Apr 6, 2010
Trying to add new HTML elements to the document using the jQuery append() function it seems it doesn't add event handlers to the newly created elements.jQuery only seems to add these in Internet Explorer:
<a href="#" onclick="alert('...'); return false;">Test</a>
In Opera, Safari and Google, all my hyperlinks look something like this:
<a href="#">Test</a>
This code is similar to what I have written:
body.append('
<a
href="#" onclick="alert('...'); return false;">Test</a>');
View 4 Replies
View Related
Oct 13, 2011
I have a piece of javascript which does not work as intended. The code is:
var v = document.getElementById('ReportViewer1');
if (v) { v.ClientController.CustomOnReportLoaded = endPoll;
}
The endPoll event handler should be added to the list of event handlers for CustomOnReportLoaded. In the code about, it removes all other event handlers and just adds itself. Looking through JQuery i found:
$('#foo').bind('click', function() {
alert($(this).text());
});
this will add the new event handler to the collection of event handlers already attached to the click event.how do I select the ClientController through JQuery's selectors?
View 1 Replies
View Related
Aug 10, 2009
which is the recommended way to bind event handlers to elements. Preferably without giving each of them an id. As far as I know, the "classic" way (<input onchange="...">) is considered deprecated and evil. So what is the jQuery way of doing this?
View 2 Replies
View Related