Eolas patent workaround: Java folks need JavaScript help

M

Mickey Segal

The long-simmering Eolas patent dispute:
http://www.microsoft.com/presspass/press/2003/oct03/10-06EOLASPR.mspx
has led to an optional Microsoft Update:
http://support.microsoft.com/kb/912945/en-us
that creates non-JavaScript problems that can be fixed using JavaScript.

With the Microsoft update installed, Java applets (as well as other content
such as Flash videos) are unable to receive user input until an activating
click or key press. Although this update has not been installed by many
users yet, is expected to be included in a periodic security update, making
it very widespread, possibly as early as today.

For Java applets there is a satisfactory workaround using JavaScript as
detailed at:
www.segal.org/java/HelloPatent/
However, since Java experts are not JavaScript experts, it was not clear
whether our code was written in the best way. Specifically, we'd appreciate
input as to whether we need both of the following lines of JavaScript code
or can get rid of the HEAD part and make a call that includes the file name
to invoke the function. The relevant JavaScript code is:

Between the HEAD tags:
<script src="specifyApplet.js" language="JavaScript"
type="text/javascript"></script>

Where I actually insert the applet:
<script
language="JavaScript"type="text/javascript">getAppletTags();</script>
 
V

VK

Mickey said:
The long-simmering Eolas patent dispute:
http://www.microsoft.com/presspass/press/2003/oct03/10-06EOLASPR.mspx
has led to an optional Microsoft Update:
http://support.microsoft.com/kb/912945/en-us
that creates non-JavaScript problems that can be fixed using JavaScript.

With the Microsoft update installed, Java applets (as well as other content
such as Flash videos) are unable to receive user input until an activating
click or key press. Although this update has not been installed by many
users yet, is expected to be included in a periodic security update, making
it very widespread, possibly as early as today.

For Java applets there is a satisfactory workaround using JavaScript as
detailed at:
www.segal.org/java/HelloPatent/
However, since Java experts are not JavaScript experts, it was not clear
whether our code was written in the best way. Specifically, we'd appreciate
input as to whether we need both of the following lines of JavaScript code
or can get rid of the HEAD part and make a call that includes the file name
to invoke the function. The relevant JavaScript code is:

Between the HEAD tags:
<script src="specifyApplet.js" language="JavaScript"
type="text/javascript"></script>

Where I actually insert the applet:
<script
language="JavaScript"type="text/javascript">getAppletTags();</script>


Shame to California lawyers, shame to California fn greedy academics. I
was watching this circus since the beginning and just cannot believe
they went through with this crap... Macromedia lost the independence
partially cause of it.

Any way: your way is a bit risky because however small your external
script is, it is still possible (on bad connection) that it will not be
loaded and parsed before getAppletTags() call. I would keep all stuff
together in the applet's insertion point:

<script type="text/javascript">
// Applet params separately
// for easier editing:
var width = 130;
var height = 40;
var code = 'Hello.class';
// end of params
var str = '<applet code="' + code
+ '" width="' + width
+ '" heigth="' + height + '"></applet>';
document.write(str);
</script>
<noscript>
<p>Client-side scripting is disabled
or not supported</p>
</noscript>
 
M

Mickey Segal

VK said:
Any way: your way is a bit risky because however small your external
script is, it is still possible (on bad connection) that it will not be
loaded and parsed before getAppletTags() call. I would keep all stuff
together in the applet's insertion point:

<script type="text/javascript">
// Applet params separately
// for easier editing:
var width = 130;
var height = 40;
var code = 'Hello.class';
// end of params
var str = '<applet code="' + code
+ '" width="' + width
+ '" heigth="' + height + '"></applet>';
document.write(str);
</script>
<noscript>
<p>Client-side scripting is disabled
or not supported</p>
</noscript>

My understanding of Microsoft's change to Internet Explorer is that it
requires not the use of JavaScript per se but rather loading resources
external to the HTML page, which as you point out can be unreliable. For
other reasons we had been generating Java applet tags with JavaScript inside
HTML pages and that didn't protect against this change in Internet Explorer.
 
V

VK

Mickey said:
My understanding of Microsoft's change to Internet Explorer is that it
requires not the use of JavaScript per se but rather loading resources
external to the HTML page, which as you point out can be unreliable. For
other reasons we had been generating Java applet tags with JavaScript inside
HTML pages and that didn't protect against this change in Internet Explorer.

Your understanding is not correct. It is all about the infamous patent
co-owned by University of California and one overly-creative guy. Read
more at:
<http://news.com.com/2009-1023_3-5082004.html>
Also google for "California university media patent"

Note: whoever thinks that a pure idea cannot be patented - wake up and
smell the coffee :-(

There are already some dramatical changes in the US-residing companies.
For example, microsoft.com site doesn't ask you anymore to install
Flash player if you have not it installed. Same for others key players.
Flash and Shockwave is being replaced by images - or require a click to
start animation.

As I'm not a lawyer I cannot advise if your JavaScript workaround is an
escape from the patent:- you better check. If you are outside of the US
I welcome you to place a big applet with raised finger animated by
default on your page. :-|
 
M

Mickey Segal

VK said:
Your understanding is not correct. It is all about the infamous patent
co-owned by University of California and one overly-creative guy. Read
more at:
<http://news.com.com/2009-1023_3-5082004.html>

The nature of the patent dispute is a secondary issue here - the need to
work around whatever Microsoft did is the primary issue. Just assembling
your applet tags using JavaScript is not enough to work around what
Microsoft did; indeed we used to assemble our applet tags using JavaScript
previously for other reasons, and that was not enough to work around this
issue.
 
R

RobG

Mickey Segal said on 15/03/2006 4:34 AM AEST:
The long-simmering Eolas patent dispute:
http://www.microsoft.com/presspass/press/2003/oct03/10-06EOLASPR.mspx
has led to an optional Microsoft Update:
http://support.microsoft.com/kb/912945/en-us
that creates non-JavaScript problems that can be fixed using JavaScript.

With the Microsoft update installed, Java applets (as well as other content
such as Flash videos) are unable to receive user input until an activating
click or key press. Although this update has not been installed by many
users yet, is expected to be included in a periodic security update, making
it very widespread, possibly as early as today.

For Java applets there is a satisfactory workaround using JavaScript as
detailed at:
www.segal.org/java/HelloPatent/
However, since Java experts are not JavaScript experts, it was not clear
whether our code was written in the best way. Specifically, we'd appreciate
input as to whether we need both of the following lines of JavaScript code
or can get rid of the HEAD part and make a call that includes the file name
to invoke the function. The relevant JavaScript code is:

Between the HEAD tags:
<script src="specifyApplet.js" language="JavaScript"

The language attribute is deprecated so ditch it, keep type.

type="text/javascript"></script>

Where I actually insert the applet:
<script
language="JavaScript"type="text/javascript">getAppletTags();</script>

If you mean can you do:

<script src="specifyApplet.js" type="text/javascript">
getAppletTags();
</script>


the answer is no. Wherever an src attribute is specified then:

"If the src has a URI value, user agents must ignore the
element's contents and retrieve the script via the URI."

<URL:http://www.w3.org/TR/html4/interact/scripts.html#edef-SCRIPT>

So I guess strictly speaking you can do it but it won't work in most
(nearly all) browsers. There was a recent thread on this but I can't
find it right now.

However, the element that loads the script doesn't have to be in the
head. The script element that loads the .js file must be before any
script element that calls code in the file, so it may be more convenient
to use (wrapping allowed deliberately):

<script src="specifyApplet.js" type="text/javascript"></script><script
type="text/javascript">getAppletTags();</script>


You may want to supply an argument to getAppletTags() and you only need
the first script element once in the document (before the first call to
getAppetTags()), it doesn't have to be added for every call.
 
T

The Magpie

RobG said:
RobG said on 15/03/2006 10:17 AM AEST:
[...]
So I guess strictly speaking you can do it but it won't work in most
(nearly all) browsers. There was a recent thread on this but I can't
find it right now.

Here 'tis:

<URL:
http://groups.google.co.uk/group/co...cted+error+<FAQENTRY>&rnum=1#d155df2b1ec2f450
Hell, if you're worried about the patent, take the easy way out. Host
your site outside the United States so no-one will give a flying fart
about the stupid thing and you can't get sued.
 
M

Mickey Segal

The Magpie said:
Hell, if you're worried about the patent, take the easy way out. Host your
site outside the United States so no-one will give a flying fart about the
stupid thing and you can't get sued.

The issue is that Microsoft is patching Internet Explorer, so the problem is
not my dealing with the patent it is my dealing with what Microsoft did
because of the patent.

According to Microsoft's workaround page:
http://msdn.microsoft.com/library/d.../author/dhtml/overview/activating_activex.asp
the workaround to what Microsoft did to Internet Explorer is to "load
controls from external script files".

Some of the code on Microsoft's workaround page does not have a reference to
the external js file in the HEAD code, but if that is the best way to get
the loading started as soon as possible that is OK with me.
 
V

VK

Mickey said:
The issue is that Microsoft is patching Internet Explorer, so the problem is
not my dealing with the patent it is my dealing with what Microsoft did
because of the patent.

A clear understanding of patent may give you an answer of how to deal
with it - because in the reality nothing is changed internally in
objects, one just need to fing a way to use them while formally staying
out of the patent.

The relevant MSDN article is written in Esop language, because
Microsoft cannot publically (plus on their own server) call to bypass a
3rd party patent and explain how to do it:- that would be a
milti-billion mistake.

So one needs to read between the lines - plus be aware of the patent
background. Search Google for inspiration ideas.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,744
Messages
2,569,484
Members
44,903
Latest member
orderPeak8CBDGummies

Latest Threads

Top