Until recently I was able to use virtual keyboards. Now they will only work with Internet Explorer. Why is this?
I used to be able to use a virtual keyboard until about few months ago. Now I can use them only in Internet Explorer. Was this caused by an update of Firefox? I don't seem to be the only person having troubles with virtual keyboards. What can be done?
Všechny odpovědi (6)
Is the virtual keyboard a function of the website itself, or does it require an add-on, or is it a feature of external software you've installed?
If it was a Firefox add-on, you could check whether it has been disabled and whether any updates are available. Try here:
orange Firefox button or classic Tools menu > Add-ons > Extensions category
Any other info you could provide would be helpful.
It's a function of the website Russianlessons.net
The keyboard software doesn't seem to be compatible with current Firefox and Google Chrome versions.
It does still work in Firefox 10 including the ESR version and Firefox 11, but not in Firefox 12 and later versions.
I'm not seeing any errors in the error console, so I don't know what the cause is.
Thanks. That confirms what I thought - the problem coincided with an update of Firefox. Maybe a future version of Firefox will let me use the keyboard. In the meantime I'll have to use Internet Explorer.
You're welcome
It doesn't work in the current version of Google Chrome as well, so chances that it will be fixed in a future Firefox versions are quite low.
Starting in Firefox 12, certain "untrusted" key events are discarded. I think this probably is the issue on that site, since cor-el discovered that it worked in Firefox 11 and stopped working in Firefox 12. This "bug" has a discussion of the issue (and it is marked WONTFIX, indicating that it is not viewed as a bug but was an intentional change): Bug 749185 – untrusted key events are refused by editors in firefox 12.
If it was your own website, you could fix the script. One approach was discussed in this thread on the mozillaZine forums: Need to override key pressed by user, replacing keycode. But... that's harder when it isn't your site.
You can inject some replacement script into the page. The function you want to replace is insertAtCaret(). This is a fairly simple version; it could get more complicated based on the pages you need to modify or the features you want to change.
Bookmarklet
A bookmarklet is a script that you save as a bookmark, for convenience, you can save it to the Bookmarks Toolbar.
(1) Copy the following line of code (it's all one long line):
javascript:var s=document.createElement("script"); s.setAttribute("type","text/javascript"); s.appendChild(document.createTextNode("function insertAtCaret(ctrl,val){if(ctrl.selectionStart==ctrl.textLength) ctrl.value+=val; else{var lastpos=ctrl.selectionStart; ctrl.value=ctrl.value.substr(0, lastpos)+val+ctrl.value.substr(lastpos);}}")); var ifs=document.getElementsByTagName("iframe"); if(ifs.length==0) document.body.appendChild(s); else ifs[0].contentDocument.body.appendChild(s); void 0;
(2) Right-click the Bookmarks Toolbar and choose New Bookmark
(3) Paste the code in as the Location
(4) Name the bookmark as you wish (for example, FixKbd)
After loading the page with the keyboard, click the button to inject the new script. Any luck?
Userscript
Using the Greasemonkey add-on, you can automate the process of changing pages. For example, you might detect whether a site is using this particular keyboard script and then override the insertAtCaret function. However, that's beyond the scope of this post.