Spell check for Opera

Some days ago I found a Orangoo Spell check hack for Opera. They have done a great job, but their method could be improved a lot. And that's what I have done :)

My script is:

  • Blazing fast since JavaScript is stored locally
  • Inline and dynamic
  • AJAX is used to send and receive data
  • Support for 27 languages
  • Ability to switch language dynamically

Download the script

How to install?

Extract the zip into your UserJS directory. That's it :)

To define what languages should be supported you should alter the SUPPORT_LANGUAGES variable in orangoo_opera_v3.js.

In-action screenshot

OSC in action

Related

A thanks goes to:

  • d.i.z and Sombria
  • Joao Eiras for cross-domain XMLHttpRequest

If you like my hack, then digg it :)

Announcements · Code · JavaScript · Orangoo 15. Mar 2007
55 comments so far

That's awesome Amir. Tnx.

Doesn't seem to be doing anything for me. :(

Thanks for the update. Can I mirror a download of this new version on my website like I had with version 2?

http://opera.gt500.org/orangoo...

Yeah sure. Be my guest.

Thanks for the script.

I have some general suggestions for your AJS library however. I would personally recommend you remove all occurences of 'eval()' from your script. It has been documented as being very inefficient. For example:

    exportToGlobalScope: function() {
        for(e in AJS)
            eval(e + " = AJS." + e);
    },


could and should be

    exportToGlobalScope: function() {
        for(e in AJS)
          window[e] = AJS[e];
    },

fearphage:
Thanks for the tip.

I have updated my development version of AJS.

I'd like to get this working anyway I can check if my user javascript stuff is working correctly? Im almost positive I did everything right.

anon:
The script should work fine if your UserJS is up and running. On Opera's website you can read more about UserJS and how to enable it.

You rock! I have been using Orangoo for sometime now and I simply love it. This User JS hack though... OMG! talking about a quantum leap forward. I am blogging about this, passing it on to OperaWatch and digging it. Carry on!

Hello, the script works fine in this Comment input-area, but nothing appears in wikipedia text-area. What's happening ?

Great work! Thank you.

Flippin' sweet script! Thanks ;)

It doesn't work in Opera 9.20.

It appears that this does not work in Opera 9.2 final.

It's a pity it broke with 9.20. I've been using a Mac for the last month or so and wanted to replicate the real-time spellcheck it uses.

Very usefull tool, but i've a problem using it. IMHO, i've done everything right, but this script doesn't seem to work... :'(
Here's log of opera debug console:
%(hl)JavaScript - http://counterculture.borda.ru...
Event thread: BeforeEvent.message
Error:
Unhandled exception: [Object DOMException]
code: 11
message: INVALID_STATE_ERR
Backtrace:
Line 381 of User JS script
return XMLHttpRequest_getAllResponseHeaders.call(request);
Line 462 of User JS script
postMessage.call(ev.source, crossDocRequest + ts + "\n" + method + "\n" + uri + "\n" + username + "\n" + password + "\n" + escape(args || "") + "\n" + serializeRequestHeaders(opr_getAllResponseHeaders.call(request)));
Line 285 of User JS script
allRequestsData[ts].acknowledgeListener(ev.event);
At unknown location
[statement source code not available]
JavaScript - http://counterculture.borda.ru...
Event thread: BeforeEvent.message
Error:
Unhandled exception: [Object DOMException]
code: 11
message: INVALID_STATE_ERR
Backtrace:
Line 381 of User JS script
return XMLHttpRequest_getAllResponseHeaders.call(request);
Line 462 of User JS script
postMessage.call(ev.source, crossDocRequest + ts + "\n" + method + "\n" + uri + "\n" + username + "\n" + password + "\n" + escape(args || "") + "\n" + serializeRequestHeaders(opr_getAllResponseHeaders.call(request)));
Line 285 of User JS script
allRequestsData[ts].acknowledgeListener(ev.event);
At unknown location
[statement source code not available]
JavaScript - http://counterculture.borda.ru...
Event thread: BeforeEvent.message
Error:
Unhandled exception: [Object DOMException]
code: 11
message: INVALID_STATE_ERR
Backtrace:
Line 381 of User JS script
return XMLHttpRequest_getAllResponseHeaders.call(request);
Line 462 of User JS script
postMessage.call(ev.source, crossDocRequest + ts + "\n" + method + "\n" + uri + "\n" + username + "\n" + password + "\n" + escape(args || "") + "\n" + serializeRequestHeaders(opr_getAllResponseHeaders.call(request)));
Line 285 of User JS script
allRequestsData[ts].acknowledgeListener(ev.event);
At unknown location
[statement source code not available]
JavaScript - http://counterculture.borda.ru...
Event thread: BeforeEvent.message
Error:
Unhandled exception: [Object DOMException]
code: 11
message: INVALID_STATE_ERR
Backtrace:
Line 381 of User JS script
return XMLHttpRequest_getAllResponseHeaders.call(request);
Line 462 of User JS script
postMessage.call(ev.source, crossDocRequest + ts + "\n" + method + "\n" + uri + "\n" + username + "\n" + password + "\n" + escape(args || "") + "\n" + serializeRequestHeaders(opr_getAllResponseHeaders.call(request)));
Line 285 of User JS script
allRequestsData[ts].acknowledgeListener(ev.event);
At unknown location
[statement source code not available]
JavaScript - http://counterculture.borda.ru...
Event thread: BeforeEvent.message
Error:
Unhandled exception: [Object DOMException]
code: 11
message: INVALID_STATE_ERR
Backtrace:
Line 381 of User JS script
return XMLHttpRequest_getAllResponseHeaders.call(request);
Line 462 of User JS script
postMessage.call(ev.source, crossDocRequest + ts + "\n" + method + "\n" + uri + "\n" + username + "\n" + password + "\n" + escape(args || "") + "\n" + serializeRequestHeaders(opr_getAllResponseHeaders.call(request)));
Line 285 of User JS script
allRequestsData[ts].acknowledgeListener(ev.event);
At unknown location
[statement source code not available]
JavaScript - http://amix.dk/blog/viewEntry/...
Event thread: BeforeEvent.message
Error:
Unhandled exception: [Object DOMException]
code: 11
message: INVALID_STATE_ERR
Backtrace:
Line 381 of User JS script
return XMLHttpRequest_getAllResponseHeaders.call(request);
Line 462 of User JS script
postMessage.call(ev.source, crossDocRequest + ts + "\n" + method + "\n" + uri + "\n" + username + "\n" + password + "\n" + escape(args || "") + "\n" + serializeRequestHeaders(opr_getAllResponseHeaders.call(request)));
Line 285 of User JS script
allRequestsData[ts].acknowledgeListener(ev.event);
At unknown location
[statement source code not available]
JavaScript - http://counterculture.borda.ru...
Event thread: BeforeEvent.message
Error:
Unhandled exception: [Object DOMException]
code: 11
message: INVALID_STATE_ERR
Backtrace:
Line 381 of User JS script
return XMLHttpRequest_getAllResponseHeaders.call(request);
Line 462 of User JS script
postMessage.call(ev.source, crossDocRequest + ts + "\n" + method + "\n" + uri + "\n" + username + "\n" + password + "\n" + escape(args || "") + "\n" + serializeRequestHeaders(opr_getAllResponseHeaders.call(request)));
Line 285 of User JS script
allRequestsData[ts].acknowledgeListener(ev.event);
At unknown location
[statement source code not available]
JavaScript - http://counterculture.borda.ru...
Event thread: BeforeEvent.message
Error:
Unhandled exception: [Object DOMException]
code: 11
message: INVALID_STATE_ERR
Backtrace:
Line 381 of User JS script
return XMLHttpRequest_getAllResponseHeaders.call(request);
Line 462 of User JS script
postMessage.call(ev.source, crossDocRequest + ts + "\n" + method + "\n" + uri + "\n" + username + "\n" + password + "\n" + escape(args || "") + "\n" + serializeRequestHeaders(opr_getAllResponseHeaders.call(request)));
Line 285 of User JS script
allRequestsData[ts].acknowledgeListener(ev.event);
At unknown location
[statement source code not available]
JavaScript - http://counterculture.borda.ru...
Event thread: BeforeEvent.message
Error:
Unhandled exception: [Object DOMException]
code: 11
message: INVALID_STATE_ERR
Backtrace:
Line 381 of User JS script
return XMLHttpRequest_getAllResponseHeaders.call(request);
Line 462 of User JS script
postMessage.call(ev.source, crossDocRequest + ts + "\n" + method + "\n" + uri + "\n" + username + "\n" + password + "\n" + escape(args || "") + "\n" + serializeRequestHeaders(opr_getAllResponseHeaders.call(request)));
Line 285 of User JS script
allRequestsData[ts].acknowledgeListener(ev.event);
At unknown location
[statement source code not available]%

Hi,

I got Opera 9.2 and I'm also unable to get this to work properly.

Thx

i have opera 9.21
i loved the idea of inline spell check like the FF2 in opera
i installed it as above.. and it did not work
plz do let me know if i have to do anything else.. like some hotkeys to enable the spell checker.

Thanks

Yeah, this seems like an excellent tool, but it doesn't work for 9.26 either.

anyone know whether or not this works in Opera 9.50?

This doesn't seem to work. The original, however, does.
http://opera.gt500.org/ospell/

Hi!
I try to use your script on my site but since Opera 9.26 it seem won't work at all. I see same error messages as above in Opera error concole.
Maybe some secure stuff applied in new Opera?

Thank you...

Thank you very much for this information. I like this site

( Sohbet Sohbet Odaları Asp/Php WeßMasteR. )

I have just installed it on Opera 9.52 on Windows and I don't see it work. Using this form as a test.

Was the script tested on this version? Which troubleshooting tips can I try?

Ah, my bad. It does create a new widget under the text entry form, I just thought that it was a part of your site, not a part of the browser :-) + I expected it would highlight the problematic words as I type, without waiting for me to click anything.

So, I can confirm that this almost works in Opera 9.52 on Windows.


The problem I have is that the progress bar is permanently in motion and I don't see any result. After a while the progress indicator is gone and still nothing.

Perhaps I must install some dictionary files?

cannot link :( please refresh link.

sohbet - çet

oh my god! thanks a lot! I've never been able to make aspell to work. And the popup thing was annoying compared of what Firefox does built in feature.
thanks for this wonderful js!

I can't get it to work. I put it in a folder in my Opera profile, then set tools/preferences/advanced/content/javascript options/user java script files to that folder. Restarted Opera and it seems to do nothing. Can someone help me get it working? This is the only feature I really miss from Firefox.

this is really awesome. I don't like the orange one, for some reason it kept bring up a weird website inside the text area for me to check the spelling. i didn't like that much, but the Version 3.5 of the userjs works perfect! I LOVE IT!

beats the aspell stuff.

This is one of the only features that i cannot understand why it's not built into opera. I hope they do by the next release. Seems silly for them to not have it.

thankyou

thank you

Thanks your great article.

Thanks for information.

thank you very much

ı am following frequently.I hope that you will be with us together with much more scharings.

ı have followed your writing for a long time.really you have given very successful information.

Thanks a lot.

thanx youu..

thanks for this great article. i'll always read this website.

Thank For You Admin

Thank for you

Good :)

thankS

yes. really very beautiful
I also agree that more quality job to be recognized

عقارات السعودية - عقارات الرياض - عقارات الخرج - عقارات مكة المكرمة - عقارات جدة - عقارات الطائف - عقارات المدينة المنورة - عقارات ينبع - عقارات الدمام - عقارات الخبر - عقارات الأحساء - عقارات القصيم - عقارات عسير - عقارات حائل - عقارات تبوك - عقارات الباحة - عقارات الحدود الشمالية - عقارات الجوف - عقارات جازان - عقارات نجران - عقارات مصر - عقارات القاهرة - عقارات الجيزة - عقارات حلوان - عقارات 6 اكتوبر - عقارات الاسكندرية - عقارات الساحل الشمالي - عقارات البحيرة - عقارات السويس - عقارات الاسماعلية - عقارات بورسعيد - عقارات البحر الاحمر - عقارات مطروح - عقارات جنوب سيناء - عقارات شمال سيناء - عقارات دمياط - عقارات الدقهلية - عقارات كفر الشيخ - عقارات الشرقية - عقارات الغربية - عقارات القليوبية - عقارات المنوفبة - عقارات الفيوم - عقارات قنا - عقارات المنيا - عقارات اسيوط - عقارات بني سويف - عقارات سوهاج - عقارات الوادي الجديد - عقارات الأقصر - عقارات اسوان - عقارات الامارات - عقارات ابوظبي - عقارات العين - عقارات دبي - عقارات جبل علي - عقارات الشارقة - عقارات رأس الخيمة - عقارات عجمان - عقارات أم القيوين - عقارات الفجيرة - الوطن العربي - عقارات الكويت - عقارات عمان - عقارات قطر - عقارات البحرين - عقارات الاردن - عقارات لبنان - عقارات المغرب - عقارات السودان - عقارات سوريا - وظائف - وظائف في السعودية - وظائف في الامارات - وظائف في مصر - وظائف في الكويت - وظائف في عمان - وظائف في قطر - وظائف في البحرين - وظائف في الاردن - وظائف في لبنان - وظائف في المغرب - وظائف في السودان - وظائف في سوريا - خدمات - العروض الجديدة - الرعاية و الإعلان - الدعم الفني - العقارات العام - شراء شقق - شراء شقة - شقق بالتقسيط - شقة بالتقسيط - شقق تمليك - شقة تمليك - شقق سكنية - شقة سكنية - شقق فندقية - شقة فندقية - شقق للايجار - شقة للايجار - شقق للبيع - شقة للبيع - شقق مفروشة - شقة مفروشة - غير مصنف - مطلوب شقق - مطلوب شقة
اهداف الدوري الأنجليزي
اهداف الدوري الأسباني
اهداف دوري ابطال اوروبا
مهارات ولقطات منوعة
اهداف الدوري السعودي
اهداف تصفيات كأس العالم
اهداف الدوري المصري
اهداف الدوري الالماني
أهداف كأس الخليج
هدف تيوب

thanks....

thanks.... a lot

thanks again

bd messages
tips for making up
making up
thank you msgs

I think its excellent tool.
Buy Essay

thanks for this article

yes. really very beautiful but what the hell is going on in arabic :)

terbiyesiz :=)
thanks

Though there are lots of spell checkers floating in the internet, which are mostly applicable in programs like MS Word, etc. But unlike 'em, Opera Orangoo Spell Check v3.0 stands alone as an outstanding in its salient features. Gud luck!

Naruto Shippuuden English

Post a comment
Commenting on this post has expired.
© 2000-2009 amix. Powered by Skeletonz.