AJAX :: Event Handlers And Garbage Collection?
May 2, 2009
I've written some functions that seem to be able to handle parallel AJAX requests. However, I am not sure if they would work under all circumstances.My idea was to create a separate object for each AJAX request in order to bind the right handler function to the appropriate .onreadystatechange. I have used an array to store references to the created objects so that they would not be garbage collected as long as needed (see the lines commented out below). I have noticed, however, that everything works nicely even if I don't save these references -- so, with these lines commented out.
My question basically is whether it is safe to do so, and what prevents these objects from being deleted by the garbage collector. As both the event and the handler function appear to be in the same object, I think it will not stop the garbage collector.
In my code, ajax_req() is called to make a request; it will create the new ajax_abs object whose constructor takes care of the rest.
// ajaxrequests=new Array();
function ajax_abs(method,page,str,dest,todo,myno){
function init(){
[code]....
Furthermore, is it possible to tell the interpreter after the request succeeds, that now it should garbage-collect the object?
View 1 Replies
ADVERTISEMENT
Mar 9, 2007
I'm working on an Ajax library that I plan to use on several upcoming
projects. Everything seems to work just great...
Now I want to get into the finer aspects of checking things... How
much memory am I using, are my objects making themselves available for
garbage collection adequately, etc.
Are there tools you can recommend (especially for IE and Firefox) that
I can use to get this information?
View 1 Replies
View Related
Jul 14, 2010
I'll start off by saying I'm a novice developer. I'm building an mvc application and recently started using the jquery hotness. I've set up a right hand nav and bound click events for collapsible panes. Inside one of those divs (action pane) I've bound click events which will open a modal dialog with a form. The form is submitted with $.post(). Then I've used $.get() to refresh several divs with the new content. Once that happens, all of my links begin to fire twice (collapsible panes and the links in the action pane) in ie8 and the latest firefox but not in chrome. I pulled out all the markup and js and put it on a static test site: [URL].
View 1 Replies
View Related
Apr 28, 2010
I'm loading a list of elements into mydiv with ajax, I want them to be selectable so I call the UI plugin selectable after the list has loaded.
The list building function produces this:
<div id='mydiv'>
<ul id='mylist'>
....
</ul>
[Code].....
The problem is, every time I click the link to reload the list via ajax, I get a duplicate selectable event handler created. Should I be removing the old event handlers before reloading the div ? if so, how?
Everything works, as in selectable still works, and only seems to fire once but I get ever growing memory usage in firefox and an ever growing list of event handlers in the firebug script tab. Eventually firefox starts to crawl and I have to restart the browser.
View 1 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
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
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
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