Taking a shot in the dark...I know this is an old, unsupported version and control but I am so close to getting this huge application working in Google Chrome I just have to give it a shot. So right now the app works fine in IE but some nodes do NOT trigger a load event in Google Chrome; I dug into the JS files and I think I have a fix but no matter what I change, nothing changes. So I think this version uses the web resources and therefore the scripts are compiled in the DLLs right? So that is a dead end. BUT is there a way to disable the web resources or just point the app or the control to a script directory or a new ig_webtree.js file? I hope so.
Can anyone help?
Hi Peter,
You are right about it - scripts are compiled in the DLLs first, so you cant just replace the file.
However, you can benefit from Javascript prototype chain and override the methods that you need to. Let's say you need to rewrite the function doSomething from the ig_webtree.js file and put it in a myFix.js file:function myFix() { $IG.WebDataTree.prototype.__doSomething = function () { // your code }}
Then add your "patch" when the page loads, and call the function on body load event:
<head runat="server"> <script type="text/javascript" src="myFix.js"></script></head><body onload="myFix()">
When the problematic functions are about to be called, the functions from your file will be executed, instead of the code in the ig_webtree.js, which cannot be modified otherwise.
Please let me know if you have further questions on the matter, I will be glad to help.
Tried this but not working. I need to get this webtree control working in Chrome and I think it is because the get element function looks for igTxt but chrome is case sensitive and actually is igtxt so doesn’t find the element. I tried overriding that JS function but doesn’t work. Any help appreciated.
Hi,
It just seems that the ChromFix is not loaded yet, when body onload is fired. Please make sure the path is correct, and everything loads. Of course first make sure that this fix will be working - type the myFix function body into the console at runtime.
Can you send a sample actually?
Maybe getting this version of the control working in Chrome is just impossible? I wish an Infragistics developer would chime in...with a give up it can't be done OR this control doesn't work because of X, Y, and Z and here is how you work around or resolve it...I would love to update the JS files and maybe recompile them myself or just override the functions that I think are the issue, which may or may not be the issue.
Hi Peter,I am an Infragistics developer. I showed the approach how to make the code call the overriden function, which is a working solution.However, the errors you are getting suggest that the overriden function or the file that it contains it is not found.If you managed to resolve this, please confirm if the overriden function is now being called.
Oh wow, I sincerely apologize. This is great though. So it must be something I am doing. Sure this works on v10.3? Maybe I am putting this in the wrong place? So the app has an HTML page with two frames. The frame on the left loads the aspx page that contains the igtree control. Should this stuff go on the HTML page or on the aspx page that has the tree control?
Also, am I even on the right track? Meaning this control can work in Chrome if 1 or more JS functions are tweaked?
I don’t guess we can hook up on Skype or MS Teams?
I am glad that you managed to achieve your requirement.
Thank you for choosing Infragistics!
Yes...this seems to be working...awesome...thanks for your help.
Exactly, this sounds like the way to go. Do not hesitate to contact us at any time if any issue occurs or just to let us know if this worked in the end.
So instead of continuously fixing each function I may or may not discover not working, I went ahead and copied the entire file and tweaked all instances of the case sensitivity issue and am overwriting all the functions...so far this seems to be working...will continue testing. I can't thank you enough for your help.
Check what is passed as node in the function arguments, check node.element.childNodes, compare it with a browser where this is working to see whats the difference. Keep us posted on the progress