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.
Ok so I am trying to implement this and it doesn't seem to be working...
<script language="JavaScript" type="text/JavaScript" src="ig_common/20103CLR35/Scripts/ChromeFix.js"></script>
onload="myFix()"
function myFix() { $IG.WebDataTree.prototype.__ig_getNodeTextElement = function () { if (node.element) { var i; for (i = 0; i < node.element.childNodes.length; i++) { var attrib = node.element.childNodes[i].getAttribute("igtxt"); if (attrib == "1") return node.element.childNodes[i]; } } return null; } }
GET localhost/.../ChromeFix.js net::ERR_ABORTED 500 (Internal Server Error)Menu.aspx?b=0:98 Uncaught ReferenceError: myFix is not defined at onload (Menu.aspx?b=0:98)