Here is some sample code which works in all browsers I've tested, but
errors in Opera:

<html>
        <head>
                <title>Opera test</title>
                <script src="prototype.js" type="text/javascript"></script>
                <script type="text/javascript">
Element.addMethods("DIV", {
        divOperaTest: function(e) { window.alert("Test Successful (" +
e.innerHTML + ")"); }
});
document.observe("contentloaded", function() {
        $$("div").each(function(a){ a.divOperaTest(); });
});
                </script>
        </head>
        <body>
        <div>Test Div</div>
        <div>Test Div 2</div>
        </body>
</html>


Changing the line which reads:
        $$("div").each(function(a){ a.divOperaTest(); });

to read:
        $$("div").each(function(a){ $(a).divOperaTest(); });

Makes it work just fine...but I'm wondering why it's
necessary...doesn't each() pass in the extended element already (and
the $$() should definitely be extended already as well)...

I don't know if this is a bug in Opera, in Prototype, or in my own
logic...I'm willing to accept that it is any (or all) of the above.

For now, I can just do $() around my divs...though I would like to
understand the reasoning why...

Here is the error console from within Opera (btw - this is the
prototype 1.6 pre-release)

Event thread: dataavailable
Error:
name: TypeError
message: Statement on line 6: Type mismatch (usually a non-object
value used where an object is required)
Backtrace:
  Line 6 of inline#1 script in file://users/ntoone/test.html
    a.divOperaTest();
  Line 584 of linked script file://users/ntoone/prototype.js
    iterator(value, index++);
  Line 831 of linked script file://users/ntoone/prototype.js
    iterator(this[i]);
  Line 585 of linked script file://users/ntoone/prototype.js
    this._each((function (value)
{
  iterator(value, index++);
}
));
  Line 6 of inline#1 script in file://users/ntoone/test.html
    $$("div").each((function (a)
{
  a.divOperaTest();
}
));
  Line 3867 of linked script file://users/ntoone/prototype.js
    handler.call(event.target, event);
  At unknown location
    [statement source code not available]


--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Prototype: Core" group.
To post to this group, send email to prototype-core@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/prototype-core?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to