Sunday, December 02, 2007
Wednesday, November 28, 2007
arguments array a javascript fv-ekben
The arguments
array is a special array that gets set when you enter a function call in javascript. The only thing special about it, though, is that it holds all the arguments that the function was called with - other than that it acts like a normal array.
…
Also, the arguments
array is not read only. This means that you can alter its contents, or even clear the array itself.
…
And if you modify the arguments
array itself (i.e, in this case set it to null), you loose the ability to access the arguments through the arguments
array, but it doesn’t affect any of the actual variables.
Wednesday, November 21, 2007
Chris Knowlton: Bit Rate Throttling Configuration Walkthrough
Tuesday, October 09, 2007
Wednesday, September 26, 2007
Datalength - NText, Text, Image mezok hosszanak lekerkdezesere
Thursday, August 16, 2007
7-es elotti IE-nel problemat okozhat a HEAD-hez uj elem hozzaadasa, ha van mar beolvasott BASE tag
Ran into a JavaScript problem with everybody’s favorite browser recently. Manipulating the head
element from within (say by adding additional script
or link
elements before the page loads) was resulting in an enormously helpful “Operation Aborted” error message in versions of Internet Explorer prior to 7. Of course, like all things IE, this error’s appearance was inconsistent.
I was eventually able to track the problem down to the presence of a base
tag. It didn’t matter if it was an open <base>
or a self-closing <base />
, if it came before the <script>
that was manipulating the head
, then IE stopped everything and issued the error. (At this point in script execution document.getElementsByTagName('head')[0]
is a valid HTML element so testing for its availability before attempting to appendChild()
doesn’t avoid the error. try/catch()
is also of no assistance.)…
Sunday, August 05, 2007
K. Scott Allen: What ASP.NET Developers Should Know About JavaScript
Itt van az egesz.
Az erdekesebb pontok a vegefele vannak:
- Object Prototypes
- how to add private members to a JavaScript object
- we can “simulate” namespace using objects
Henri Sivonen: HOWTO Avoid Being Called a Bozo When Producing XML
Note about the scope of this document: This document focuses on the Unicode layer, the XML 1.0 layer and the Namespaces in XML layer. Getting higher layers like XHTML and Atom right are outside the scope of this document. Also, anything served as text/html
is outside the scope of this document, alhough the methods described here can be applied to producing HTML. In fact, doing so is even a good idea.
Contents
- Don’t think of XML as a text format
- Don’t use text-based templates
- Don’t
print
- Use an isolated serializer
- Use a tree or a stack (or an XML parser)
- Don’t try to manage namespace declarations manually
- Use unescaped Unicode strings in memory
- Use UTF-8 (or UTF-16) for output
- Use NFC
- Don’t expect software to look inside comments
- Don’t rely on external entities on the Web
- Don’t bother with CDATA sections
- Don’t bother with escaping non-ASCII
- Avoid adding pretty-printing white space in character data
- Don’t use
text/xml
- Use XML 1.0
- Test with astral characters
- Test with forbidden control characters
- Test with broken UTF-*
Henri Sivonen: Activating the Right Layout Mode Using the Doctype Declaration
In order to deal with both old tag soup written to old browser quirks and new CSS-compliant pages, Firefox (and other Mozilla Gecko-based browsers), Safari, Opera (7 and later), Internet Explorer 6 and 7, Mac IE 5, and Konqueror (3.2 and later) have two main layout modes. In one mode the layout engine attempts to render conforming pages according the CSS specifications. In the other mode the layout engine tries to mimic old browsers. In Firefox these modes are known as “the Standards mode” and “the Quirks mode” respectively. In this document the same names are used also when referring to the modes of the other browsers.
Background
The bugs and non-standard behaviors of old browsers such as Netscape Navigator 4.x and IE 5 for Windows are called “quirks”. For example, not inheriting styles into tables is a quirk. Sometimes pages have been authored in such a way that their layout depends on quirks.
Most quirks are related to layout and, hence, are in conflict with CSS. Rendering quirky pages according to CSS would make them look different from what the author most likely intended. On the other hand, being able to use CSS as specified is a big win compared to writing for old quirks forever.
Layout Modes
To address the conflicting goals of backwards compatibility and CSS conformance, contemporary browsers have two or three layout modes.
Quirks Mode
In the Quirks mode the browsers violate CSS specifications in order to achieve backwards compatible layout. Different browsers implement different quirks. Therefore, “Quirks mode” is not a single target. For example, Mozilla focused on imitating Netscape 4.x initially. Windows IE 6 and 7, on the other hand, are focused on imitating Windows IE 5.
The point of the Quirks mode is avoiding “breaking” old pages. If you are authoring new pages now, you are supposed to comply with the relevant specifications (CSS 2.1 in particular) and target the Standards mode.
Standards Mode
In the Standards mode the browsers try to give conforming documents the specification-wise correct treatment to the extent implemented in a particular browser.
Almost Standards Mode
Firefox, Safari and Opera 7.5 (and later) also have a third mode known as “the Almost Standards mode”, which implements the vertical sizing of table cells traditionally and not rigorously according to the CSS2 specification. Mac IE 5, Windows IE 6 and 7, Opera prior to 7.5 and Konqueror do not need an Almost Standards mode, because they don’t implement the vertical sizing of table cells rigorously according to the CSS2 specification in their respective Standards modes anyway. In fact, their Standards modes are closer to Mozilla’s Almost Standards mode than to Mozilla’s Standards mode. It is important to remember that even though the various browsers have conceptually similar modes, the corresponding modes of the different browsers are not identical.
…
Firefox, Safari, Opera (7 and later), Windows IE 6 and 7, Mac IE 5 and Konqueror (3.2 and later) all use doctype sniffing in order to decide the layout mode for text/html
documents. This means that the mode is picked based on the document type declaration (or the lack thereof) at the beginning of an HTML document. (Documents served using an XML content type always get the Standards mode.)
Szinten itt talalhato egy tablazat is arrol, hogy melyik browser melyik doctype-ot hogyan rendereli.
++++
Anne van Kesteren pedig keszitett egy tablazatot arrol, hogy a browserek hogyan impelementaljak a clientHeight, offsetHeight
es scrollHeight
-ot a body
es html
tagen quirks es standards mode-ban.
Friday, July 27, 2007
above the fold (above the scroll, above the crease)
The term can be used more generally to refer to anything that is prominently displayed.
Above the scroll, a concept in web design referring to location of an item near the top of a web page, which can thus be viewed in a browser without scrolling. Some web marketers have called this “above the crease” referring to way in which newspapers of yesteryear were folded and creased.
tag soup
web bug (a.k.a. tracking image, clear gif, 1-by-1 gif, invisible gif)
A Web Bug is a graphics on a Web page or in an Email message that is designed to monitor who is reading the Web page or Email message. Web Bugs are often invisible because they are typically only 1-by-1 pixel in size. They are represented as HTML IMG tags.
What information is sent to a server when a Web Bug is viewed?
- The IP address of the computer that fetched the Web Bug
- The URL of the page that the Web Bug is located on
- The URL of the Web Bug image
- The time the Web Bug was viewed
- The type of browser that fetched the Web Bug image
- A previously set cookie value
What kinds of uses does a Web Bug have in an Email message?
- A Web Bug can be used to find out if a particular Email message has been read by someone and if so, when the message was read.
- A Web Bug can provide the IP address of the recipient if the recipient is attempt to remain anonymous.
- Within an organization, A Web Bug can give an idea how often a message is being forwarded and read.
Firefoxban a noscript extension az 1.1.6.11-es verziotol letilthatova teszi (about:config > noscript.blockNSWB)
Thursday, July 26, 2007
Tenni Theurer: Maximizing Parallel Downloads in the Carpool Lane
Az IE-nel a registy manipulalasaval:
- Start Registry Editor (Regedt32.exe).
- Locate the following key in the registry:
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings - On the Edit menu, point to New click DWORD Value, and then add the following registry values:
Value name: MaxConnectionsPer1_0Server
Value data: 10
Base: DecimalValue Name: MaxConnectionsPerServer
Value data: 10
Base: Decimal - Quit Registry Editor.
Firefoxban pedig az about:config oldalon a
network.http.max-persistent-connections-per-server atallitasaval.
Kimertek, hogy mennyit huz a sebessegen, ha tobb hostname aliast hasznalnak amivel arra szorithatjak a browsert, hogy egyszerre tobb elemet toltson le, de az jott ki, hogy 2 aliasnal tobbet nem erdemes hasznalni, mert csak meglassabb lehet az egesz, de gyorsitani biztos nem fog.
Ryan Bran merese szerint viszont siman megeri 3 kulonbozo subdomaint hasznalni.
Wednesday, July 25, 2007
Reload IE-ben a cahce kiiktatasaval.
Thirteen Simple Rules for Speeding Up Your Web Site by Yahoo! Developer Network
1. Make Fewer HTTP Requests
2. Use a Content Delivery Network
3. Add an Expires Header
4. Gzip Components
5. Put CSS at the Top
6. Move Scripts to the Bottom
7. Avoid CSS Expressions
8. Make JavaScript and CSS External
9. Reduce DNS Lookups
10. Minify JavaScript
11. Avoid Redirects
12. Remove Duplicate Scripts
13. Configure ETags
Monday, July 23, 2007
palindromic pangram
A pangram or holoalphabetic sentence, is a sentence which uses every letter of the alphabet at least once.
A palindromic pangram is a multi-word palindrome that includes all 26 letters of the alphabet.
Tuesday, July 17, 2007
Fritz Onion: Beware trailing comma in JavaScript prototypes
When defining a number of functions in a prototype in JavaScript, do not include a trailing comma after the last
MyType.prototype = {
foo : function() {
// ...
},
bar : function() {
//...
}, //<- fails in IE!
}
function:What was especially tricky about tracking this problem down was that FireFox works with or without the trailing comma, so it only fails in IE!
Aza Raskin: Never Use a Warning When you Mean Undo
Row Swan: Conflicting Absolute Positions
“On two separate occasions this month, I’ve been required to produce a layout in which a fixed-width scrolling side “pane” and flexible scrolling main “pane” must resize to fill all available space in a browser window.”
Vegigjarja a dolgot es vegul Div-ekkel es CSS-sel oldja meg. Persze most is az IE bonyolitja a megoldast.
Monday, July 16, 2007
Peter-Paul Koch: The this keyword (in javascript)
Itt van az egesz, de a lenyeg:
What does this refer to in the function doSomething()?
function doSomething() {
this.style.color = '#cc0000';
}
If you want to use this for accessing the HTML element that is handling the event, you must make sure that the this keyword is actually written into the onclick property. Only in that case does it refer to the HTML element the event handler is registered to. So if you do
element.onclick = doSomething;
alert(element.onclick)
you get
function doSomething()
{
this.style.color = '#cc0000';
}
As you can see, the this keyword is present in the onclick method. Therefore it refers to the HTML element.
But if you do
alert(element.onclick)
you get
function onclick()
{
doSomething()
}
Examples - copying
this
is written into the onclick
method in the following cases:element.onclick = doSomething
element.addEventListener('click',doSomething,false)
element.onclick = function () {this.style.color = '#cc0000';}
Examples - referring
In the following casesthis
refers to the window:
element.onclick = function () {doSomething()}
element.attachEvent('onclick',doSomething)
Sunday, July 15, 2007
Ackermann fuggveny
A(m,n) =
- n+1, ha m=0
- A(m-1,1), ha n=0
- A(m-1, A(m, n-1)), ha m>0, n>0
- Ahogy a wikipediaban irtak:
“A(4, 2) nagyobb, mint az Univerzum részecskéinek száma a 200. hatványon. A(5, 2) tÃzes számrendszerben Ãrva nem férne el a fizikai Univerzumban…Ha megtehetnénk, hogy a mostani Univerzum minden részecskéjét egy csettintéssel egy univerzummá tágÃtsuk, utána ugyanezt a megjelent univerzumok részecskéivel, és ezt sokszor megtennénk, meghalnánk végelgyengülésben mielÅ‘tt a részecskék száma elérné a A(4, 3)-t.”
Tuesday, July 10, 2007
Miert ne hasznaljunk with-et javascriptben
with (o) {
foo = null;
}
jelentheti azt is, hogy az o.foo
lesz null meg azt is, hogy a globalis foo
valtozo lesz null vagy akar mindketto.
throw a javascriptben
throw new Error(reason);
mellett lehet object literalt is hasznalni. Pelda a Crockford videobol:
throw {
name: exceptionName,
message: reason
}
for..in buktato javascriptben
Vegig lehet menni egy object
minden member-en igy:
for (var name in object) {...}
de ilyenkor vegigmegyunk azoknak az object-eknek is minden elemen amibol a mi objectunk szarmaztatva volt. Ezert Crocford szerint jobb igy megszokni meg ha csunya is:
for (var name in object) {
if (object.hasOwnProeprty(name)) {..}
}
laballed break a javascriptben
- Statements can have labels.
- Break statements can refer to those labels.
loop: for (;;) {
...
if (...) {
break loop;
}
...
}
Egymasba agyazott ciklusoknal is mukodik.
Friday, July 06, 2007
Honnan tudjuk, hogy az utolag include-olt javascript mar betoltodott. [2]
function loadScript(src, callback) {
var node = document.createElement("script");
if (node.addEventListener)
node.addEventListener("load", callback, false);
else
node.onreadystatechange = function() {
if (this.readyState == "complete") callback.call(this);
}
node.src = src;
document.getElementsByTagName("head").item(0).appendChild(node);
node = null;
}
// load 30k script.
// Listener.cleanUp is defined at the bottom of drag.js
callback = function() {
var self = this;
alert("Loaded: " + this.src + "\nListener.cleanUp (nested):" + Listener.cleanUp);
};
loadScript("http://dhtmlkitchen.com/editor/js/drag.js", callback);
[Update]
Ahogy Jan Volter is emliti jobb vigyazni ezzel a readyState
propertyvel es onreadystatechange
eventtel, mert:
The “this.readyState == ‘complete’” test doesn’t actually entirely work. The readyState theoretically goes through a series of states:
0 uninitialized 1 loading 2 loaded 3 interactive 4 complete
But in fact, states may be skipped. In my experience with IE 7, you get either a loaded event or a completed event, but not both. It may have something to do with whether you are loading from cache or not but there seem to be other factors that influence which events you get. Sometimes I get loading or interactive events too, and sometimes I don’t. It’s possible the test should be “this.readyState == ‘loaded’ || this.readyState == ‘complete’“, but that risks triggering twice.
Honnan tudjuk, hogy az utolag include-olt javascript mar betoltodott.
Stoyan (mar torolt) irasa szerint egy 1998-as MSDN cikkben talalkozott a readyState property-vel es azt hasznalva ez a kodreszlet IE-ben (csak ott!!) mukodik:
The idea is that after a new DOM element (a script tag) is created, you can have access to the readyState property of the element. If it says “complete”, then the new script is included and it’s OK to call functions from it. If you want to “listen” when the script download will be completed, you can attach an listener to the onreadystatechange event, just like with XMLHttpRequests.
Here’s an example:
var js;
function include_js(file) {
var html_doc = document.getElementsByTagName('head').item(0);
js = document.createElement('script');
js.setAttribute('type', 'text/javascript');
js.setAttribute('src', file);
html_doc.appendChild(js);
// alert state change
js.onreadystatechange = function () {
alert(js.readyState);
if (js.readyState == 'complete') {
// safe to call a function
// found in the new script
imready();
}
}
return false;
}
A commentek kozott Aaron Bassett egy masik megoldast javasolt, amihez modositani kell egy kicsit a betoltendo scripten (mar ha ez lehetseges), de szerinte minden browserben mukodik (bar nem probalta):
This untested but I dont see any reason why it wouldnt work, and should work across all browsers.
Right at the end of the external js file set a variable like:
var externalScriptLoaded = true;
Then in your main code you could use:
function checkScriptLoaded() {
if(!externalScriptLoaded) {
setTimout("checkScriptLoaded", 500);
} else {
// script loaded and ready to use
}
}
If you have multiple external files you want to check just make sure each has a unique variable name being set and check them accordingly.
This polling every half-second isnt perfect but it will work.
Your other option would be to create a function/method in your main script which inits the actions to perform when the external script is loaded.
Then as the very last thing in your external script you could just call that function/method
externalScripts.myScriptLoaded();
As this call would be at the end of your file it wont be run until the rest of the file ahead of it has been downloaded.
Once again this method is untested but am 99% sure will work and will be cross browser.
Saturday, June 30, 2007
Nicholas C. Zakas: dynamically inserting CSS into your page
Safari requires dynamically created <style/
> elements to be inserted into the for the rules to be applied
…
When IE encounters style.appendChild()
it throws the rather obtuse and not-very-helpful error message, “unexpected call to method or property access”. Try replacing that with a call to set innerHTML, and you’ll get an equally useless error message of “unknown runtime error”. What’s going on here? It turns out that IE won’t let you manipulate <style/
> elements in this way. There is, however, a different way to do the same thing. IE supports a styleSheet
property on each style element that allows for the manipulation of the style sheet and the rules contained within. The styleSheet
property has a property called cssText
, which can be used to set and retrieve the CSS text for the style sheet.
…
This code now works in all A-grade browsers:
function addCss(cssCode) {
var styleElement = document.createElement(”style”);
styleElement.type = “text/css”;
if (styleElement.styleSheet) {
styleElement.styleSheet.cssText = cssCode;
} else {
styleElement.appendChild(document.createTextNode(cssCode));
}
document.getElementsByTagName(”head”)[0].appendChild(styleElement);
}
A warning: IE only allows writing to styleSheet.cssText
one time per <style
> element. If you try to do it more than one time, it can crash the browser. For this reason, it’s best not to reuse <style
> elements on your page. Instead, remove them or just add new ones.
…
A commentek kozul:
According to the HTML 4.01 spec section 14.2.3, style tags must be contained in the head element: “HTML permits any number of STYLE elements in the HEAD section of a document.”
Link to the spec:
http://www.w3.org/TR/html401/present/styles.html#edef-STYLE
browser csoportositas a YUI-nel
C-grade
C-grade is the base level of support, providing core content and functionality. It is sometimes called core support. Delivered via nothing more than semantic HTML, the content and experience is highly accessible, unenhanced by decoration or advanced functionality, and forward and backward compatible. Layers of style and behavior are omitted.
C-grade browsers are identified on a blacklist. Approximately 3% of our audience receives a C-grade experience.
Summary: C-grade browsers are identified, incapable, antiquated and rare. QA tests a sampling of C-grade browsers, and bugs are addressed with high priority.
A-grade
A-grade support is the highest support level. By taking full advantage of the powerful capabilities of modern web standards, the A-grade experience provides advanced functionality and visual fidelity.
A-grade browsers are identified on a whitelist. Approximately 96% of our audience enjoys an A-grade experience.
Summary: A-grade browsers are identified, capable, modern and common. QA tests all A-grade browsers, and bugs are addressed with high priority.
X-grade
X-grade provides support for unknown, fringe or rare browsers. Browsers receiving X-grade support are assumed to be capable. (If a browser is shown to be incapable — if it chokes on modern methodologies and its user would be better served without decoration or functionality — then it is considered a C-grade browser.)
X-grade browsers include all browsers not on the C-grade blacklist or the A-grade whitelist. Approximately 1% of our audience receives the X-grade experience.
Summary: X-grade browsers are generally unknown, assumed to be capable, modern, and rare or fringe. QA does not test, and bugs are not opened against X-grade browsers.
The Relationship Between A- and X-grade Support
A bit more on the relationship between A and X grade browsers: One unexpected instance of X-grade is a newly-released version of an A-grade browser. Since thorough QA testing is an A-grade requirement, a brand-new (and therefore untested) browser does not qualify as an A-grade browser. This example highlights a strength of the Graded Browser Support approach. The only practical difference between A and X-grade browsers is that QA actively tests against A-grade browsers.
Unlike the C-grade, which receives only HTML, X-grade receives everything that A-grade does. Though a brand-new browser might be characterized initially as a X-grade browser, we give its users every chance to have the same experience as A-grade browsers.
javascriptben lassuak a bitwise operatorok
Mert eloszor atkonvertaljak a 64 bites floating point-ban tarolt szamot 32 bites signed integerre, aztan shiftelik es utana visszakonvertaljak az eredmenyt 64 bites floating point-ba.
Tehat a shiftelgetes itt lassabb lesz mintha siman megszoroznank mondjuk kettovel az erteket.
&& es || operatorok javascriptben
&& operator
- The guard operator, aka logical and
- If first operand is truthy
then result is second operand
else result is first operand
- It can be used to avoid null references
if (a) {
return a.member;
} else {
return a;
}
- can be written as
return a && a.member;
|| operator
- The default operator, aka logical or
- If first operand is truthy
then result is first operand
else result is second operand
- It can be used to fill in default values.
var last = input || nr_items;
- (If
input
is truthy, thenlast
is input, otherwise setlast
tonr_items
.)
Friday, June 29, 2007
== es != operatorok tipust castolhatnak javascriptben
var a = 5
var b = “5″
Print(a == b) //True
Print(a === b) //False
falsy - truthy values in javascript
Falsy values:
- false
- null
- undefinded
- “” (empty string)
- 0
- NaN
All other values (including all Objects) are truthy “0″, “false”
NaN != NaN
Es azzal egyutt, hogy a NaN azt jelenti, hogy Not a Number, a tipusa megis number:
Print(typeof(NaN)) // number
Numbres in javascript
- Only one number type (No integers)
- 64-bit floating point
- IEEE-754 (aka “Double”)
- Does not map well to common understanding of arithmetic:
- 0.1 + 0.2 = 0.30000000000000004
Tehat az Crackford tanacsa, hogy ha penzzel szamolunk akkor szorozzuk fel szazzal az operandusokat, vegezzuk el a szamitast majd az eredmenyt osszuk vissza szazzal.
Wednesday, June 27, 2007
Brad Abrams: Silent install of the .NET Framework
When I talked to ISV, they often just want to use the .NET Framework as an implementation detail of their applications.. they don’t want their users to have to go to windows update or MSDN to download the framework, and they don’t want to have some Microsoft setup UI popping up during the install experience of their application.
For this scenario, we have a little known feature of setup where you can install it the .NET Framework silently.. that is with no-UI popping up at all. This allows you to have full control of the experience…
For .NET FX 3.0: the magic command line is: Dotnetfx3.exe /q
See this white paper for more details.
Oh, and if you are still on .NET Fx 2.0, the command is: Dotnetfx.exe /q:a /c:”install /q”
And you can find more out here.
lifted function
Precisely what mathematicians mean by “lifted”.
Suppose we’ve got a function f which maps values from a set A into a set B. That is f:A→B.
Suppose further that null is not a member of either A or B.
Now consider the sets A’ = A ∪ { null } and B’ = B ∪ { null }
We define the “lifted function” f’ as
f’:A’→B’ such that f’(x) = f(x) for all x ∈ A and f’(null) = null
Similarly, if we had a two-argument function f: A × B → C, we would define f’: A’ × B’ → C’ as f’(x,y) = f(x,y) for all (x,y) ∈ A × B and null if either x or y is null.
What we’re getting at here is that “lifted” means “takes nulls, always agrees with the unlifted version when arguments are not null, maps everything else onto null”.
ubiquitous, mature
mature: megfontolt, atgondolt, erett
Tuesday, June 26, 2007
parseInt radix attibutuma
parseInt(string[, radix])
A radix-et tehat el lehet hagyni csak nem erdemes, mert ha nem adjuk meg akkor a string alapjan probalja megallapitani es ha “0″-val kezdodik akkor 8-as alapunak veszi es peldaul a “011″-bol decimalis 9 lesz, a “08″-bol pedig 0, mert ugye 8 nincs okatlis szamrendszerben.
Wednesday, May 23, 2007
ListBox control: Right click: No Click events raised
The following controls do not conform to the standard Click event behavior:
- Button control
- Left click: Click
- Right click: No Click events raised
- Left double-click: Click, Click
- Right double-click: No Click events raised
- CheckBox control
- Left click: Click
- Right click: No Click events raised
- Left double-click: Click, Click
- Right double-click: No Click events raised
- RadioButton control
- Left click: Click
- Right click: No Click events raised
- Left double-click: Click, Click
- Right double-click: No Click events raised
- TextBox control
- Left click: Click
- Right click: No Click events raised
- Left double-click: Click, DoubleClick
- Right double-click: No Click events raised
- ListBox control
Note The event behavior detailed below happens whether the user clicks on an item or not (that is, a mouse click or double-click anywhere within the ListBox control raises these events).
- Left click: Click
- Right click: No Click events raised
- Left double-click: Click, DoubleClick
- Right double-click: No Click events raised
- CheckedListBox control
Note The event behavior detailed below happens whether the user clicks on an item or not (that is, a mouse click or double click anywhere within the ListBox control raises these events)
- Left click: Click
- Right click: No Click events raised
- Left double-click: Click, DoubleClick
- Right double-click: No Click events raised
- ComboBox control
Note The event behavior detailed below happens whether the user clicks on the edit field, the button, or on an item within the list.
- Left click: Click
- Right click: No Click events raised
- Left double-click: Click, Click
- Right double-click: No Click events raised
- RichTextBox control
- Left click: No Click events raised
- Right click: No Click events raised
- Left double-click: No Click events raised
- Right double-click: No Click events raised
- ListView control
Note The event behavior detailed below happens only when the user clicks on the items in the ListView control. No events are raised for clicks anywhere else on the control. In addition to those described below, there are the BeforeLabelEdit and AfterLabelEdit events, which may be of interest to developers wishing to use validation with the ListView control.
- Left click: Click
- Right click: Click
- Left double-click: Click, DoubleClick
- Right double-click: Click, DoubleClick
- TreeView control
Note The event behavior detailed below happens only when the user clicks on the items themselves or to the right of the items in the TreeView control. No events are raised for clicks anywhere else on the control. In addition to those described below, there are the BeforeCheck, BeforeSelect, BeforeLabelEdit, AfterSelect, AfterCheck, and AfterLabelEdit events, which may be of interest to developers wishing to use validation with the TreeView control.
- Left click: Click
- Right click: Click
- Left double-click: Click, DoubleClick
- Right double-click: Click, DoubleClick
Sunday, May 06, 2007
Sunday, April 29, 2007
Wednesday, April 25, 2007
Software as a service
Wednesday, April 04, 2007
Jeff Smith: Conditional Joins in SQL Server
Sometimes, when writing SELECTs, we come across situations in which we we need to write a join containing a condition of some sort. You might think to do this with either a CASE expression or with some OR boolean logic in your JOIN expression. Often, you might encounter syntax errors, performance problems, or results not being returned the way you expect when trying this. There’s a much better way to approach the problem.
Instead of trying to alter a single INNER JOIN’s relation from row to row, instead use multiple LEFT OUTER JOINS in your SELECT, one for each table or condition that you need to consider.
Transact-SQL: ISNULL(), COALESCE()
ISNULL(Transact-SQL): Replaces NULL with the specified replacement value.
Sunday, February 25, 2007
Peter-Paul Koch: Object detection
De a lenyeg:
If you want to know whether the browser that views your page supports certain objects you want to use in your code, you should never EVER use a browser detect.
Instead, we simply look if the browser supports the object (method, array or property) we want to use. Let’s continue with the mouseover example. This script relies on the document.images
array, so first and foremost we’ll have to detect if the browser supports it. This is done by
if (document.images)
{
do something with the images array
}
Another common detect is for window.focus
. This is a method (a command by which you tell JavaScript to do something for you). If we want to use the method, we’ll have to check first if the browser supports it.
Note the correct way of doing this: you ask for the method without brackets. This code
if (window.focus)
means: “If the focus method is supported”, while this code
if (window.focus())
means: “If you can put the focus on the window” and assumes that focus is supported. If it isn’t, this line of code creates errors. The brackets ()
actually execute the focus command, which is not what we want in this case. So we check it without the brackets (see if it exists) and only when the browser passes the check we actually execute the command by adding brackets:
if (window.focus) window.focus()
So the whole point is that if you want to use the array document.images, first check if it is supported. If you want to use the focus method of the window, first check if it is supported.
If you always use object detection, your scripts will never generate any error messages, although they might not work in certain browsers.
Friday, February 23, 2007
Tommy Olsson: Graceful Degradation & Progressive Enhancement
The premise for graceful degradation is to first build for the latest and greatest, then add handlers for less capable devices.
…
Another common occurrence in sites built from the graceful degradation point of view is the noscript
element. You provide some feature based on JavaScript and add a more basic version for user agents that do not support JavaScript or have client-side scripting disabled.
…
There is one problem with noscript
, though. I may use a browser that supports JavaScript and has it enabled, but there could be a company firewall that strips incoming JavaScript for security reasons. In this case the noscript
element will not be rendered (because my browser supports scripting) but the JavaScript code that should create the menu won’t be applied either, because it gets stuck behind the firewall.
Progressive enhancement starts at the opposite end from graceful degradation: begin with the basic version, then add enhancements for those who can handle them.
…
The most common occurrence of progressive enhancement is probably the external CSS style sheet.
…
This is progressive enhancement: it works for everyone, but users with modern browsers will see a more usable version.