ASP.NET Custom Server Controls: Extended Wordhack Control with Key Combination - Did any JavaScripts change from the previous article?
(Page 3 of 5 )
Yes. The JavaScripts are different from those available in my previous article. Now we shall go through the method “getJS4WordHack”. First of all, you should understand that the following JavaScript code will be common to every instance of the same control.
Dim js As String
js = "<SCRIPT LANGUAGE=""JavaScript"">"
js &= "var SpecialWord = new Array();"
js &= "var SpecialUrl = new Array();"
js &= "var SpecialLetter = new Array();"
js &= "function getKey(keyStroke) {"
js &= "var isNetscape=(document.layers);"
js &= "var eventChooser = (isNetscape) ? keyStroke.which :
event.keyCode;"
js &= "var which = String.fromCharCode
(eventChooser).toLowerCase();"
js &= "for(i = 0; i <= SpecialWord.length-1; i++) {"
js &= "if (which == SpecialWord[i].charAt(SpecialLetter[i]))
{"
js &= "SpecialLetter[i]++;"
js &= "if (SpecialLetter[i] == SpecialWord[i].length)
window.location = SpecialUrl[i];"
js &= "}"
js &= "else SpecialLetter[i] = 0;"
js &= "}"
js &= "}"
js &= "document.onkeypress = getKey;"
js &= "</script>"
Return js
This is quite different from my previous article. Within the above JavaScript, I declared and utilized arrays to handle a greater number of words to hack. Every key (or character) pressed will also be stored in a separate array with exactly the same index of other arrays. In that way, every word will have its own key presses! Finally, I am using a loop to go through all the words which are supposed to be hacked for every key press. If any of the words match, I immediately redirect to a specific URL (which is also an array) with exactly the same index as that of the matched word.
Now coming to another concept, how am I adding elements to the JavaScript array? I implemented that by using the following JavaScript (which is available in “getJS4WordParam”):
Dim js As String
js = "<SCRIPT LANGUAGE=""JavaScript"">"
js &= "SpecialWord[" & Val(Me.OrderOfPreference) & "]='" &
Me.Word2Hack.Trim & "'; "
js &= "SpecialUrl[" & Val(Me.OrderOfPreference) & "]='" &
Me.RedirectURL.Trim & "'; "
js &= "SpecialLetter[" & Val(Me.OrderOfPreference) & "]=0; "
js &= "</script>"
Return js
The above JavaScript gets emitted, differently, for every instance of the control. The previous JavaScript was emitted only once per any number of instances. Coming to the above Javascript, the value within the property “OrderOfPreference” becomes the index of three arrays, namely “SpecialWord”, ”SpecialUrl” and “SpecialLetter”.
Next: Combining with the “Ctrl” key! >>
More ASP.NET Articles
More By Jagadish Chaterjee