Forum: Rails Spinoffs (closed, excessive spam) inPlaceCollection and IE 7

Posted by Deco Rior (Guest)
on 2007-12-17 22:56
(Received via mailing list)
Hi,

I have not been able to get Scriptaculous 1.8 and IE 7 to support the
inPlaceCollection Editor. It gives a blank space where the dropdown
should be.

The demo examples are still using prototype 1.5 and scriptaculous 1.6
rc4

This is not good :-(

Has there been any other confirmation of this?

Deco
Posted by Chris Spencer (sp3nny)
on 2008-02-15 16:16
Hello,

I've been having problems with IE 6 and InPlaceCollectionEditor as well.

I'm using the very latest versions of prototype (1.6.0.2) and scripty 
(1.8.1), but no joy. IE always reports 'Object doesn't support this 
property or method' when the select control is initialised.

Can anyone shed any light on this? I'd really appreciate it if anyone 
can help.

Thanks


Chris

Code:

     document.observe( "dom:loaded", function() {
     new Ajax.InPlaceCollectionEditor( 'testCollect', 
'<gurlcat><action>', {
     loadCollectionURL: '<cURL>',
     ajaxOptions: {method: 'get'}});
     });



Deco Rior wrote:
> Hi,
> 
> I have not been able to get Scriptaculous 1.8 and IE 7 to support the
> inPlaceCollection Editor. It gives a blank space where the dropdown
> should be.
> 
> The demo examples are still using prototype 1.5 and scriptaculous 1.6
> rc4
> 
> This is not good :-(
> 
> Has there been any other confirmation of this?
> 
> Deco
Posted by Sheena Carswell (sheena)
on 2008-03-18 00:37
I had similar problems with the InPlaceCollectionEditor in IE with 
scriptaculous 1.8.1, and had to add a couple of hacks to fix the 
problem.

The first javascript error I was seeing was when hovering over the 
control.  This didn't seem to cause adverse effects, but was annoying. 
I got rid of this by overriding the highlighting code, which I didn't 
need:

var editor = new Ajax.InPlaceCollectionEditor(
    divname,
    action, {
      okButton: true,
      okText: okText,
      cancelLink: true,
      cancelText: cancelText,
      collection: collection,
      value: value,
      clickToEditText: clickToEditText,
      highlightColor: 'transparent',
      highlightEndColor: 'transparent',
      ajaxOptions: {method: 'post'},
      onComplete: function(transport, element) {
        // do nothing - this is a fix for javascript error in IE with 
scriptaculous 1.8.1
      },
      onLeaveHover: function(ipe) {
        // do nothing - this is a fix for javascript error in IE with 
scriptaculous 1.8.1
      }
    }
  );

The second and more serious problem was that clicking on the control 
just made it disappear, in addition to giving the javascript error 
'Object doesn't support this property or method'.  To fix this I had to 
change controls.js.  In the definition of Ajax.InPlaceCollectionEditor, 
I added to the first line of the createEditField function (line 763):

  createEditField: function() {
    var list = document.createElement('select'); Element.extend(list); 
// TODO: SCARSWELL: added extend call to fix javascript bug in IE
    list.name = this.options.paramName;
    ...
  },

This was based on some information in the prototype blog: 
http://www.prototypejs.org/learn/extensions

Hope this helps, and if anyone else has a cleaner fix I'd love to hear.

Sheena


Chris Spencer wrote:
...
> I've been having problems with IE 6 and InPlaceCollectionEditor as well.
> 
> I'm using the very latest versions of prototype (1.6.0.2) and scripty 
> (1.8.1), but no joy. IE always reports 'Object doesn't support this 
> property or method' when the select control is initialised.
...
> Deco Rior wrote:
>> Hi,
>> 
>> I have not been able to get Scriptaculous 1.8 and IE 7 to support the
>> inPlaceCollection Editor. It gives a blank space where the dropdown
>> should be.
...
Posted by Chris Spencer (sp3nny)
on 2008-03-18 14:59
That works great Sheena - thanks so much for writing up your solution 
here on the forum.

I had to abandon the collection editor in the end as I just couldn't 
understand what was causing the problem. I settled for placing the 
select control on the page with my server side scripting language, and 
hiding it until it was needed. The pure js solution is much cleaner 
though I think.

Thanks again for the info!


Chris
This topic is locked and can not be replied to.