javascript - Why doesn't this Dojo 1.9/JS code work in Internet Explorer 7? -
we having problem web application uses dojo 1.9. application works fine in chrome, firefox , ie 10/11 getting reports of problem in ie 7.
unfortunately, have no way test straight because corporate directive, ie 7 removed developer machines. responsible fixing bug have no way duplicate.
because of user feedback, buttons in application changed type="submit" type="button" , onclick() handler added buttons form submitted only when button clicked not when come in pressed. here dojo/domready! code wires buttons:
// create buttons submit form on click (avoid keypress) query("button[type='button']").on("click", function(e) { console.log(" in button onclick handler"); // submits form based on button clicked myapp.core.buttonclick("applicationinfo",this); console.log(" leaving button onclick handler"); }) here routine submits form (myapp.core.buttonclick):
myapp.core.buttonclick = function(formname, buttonobject) { // have transmit info - button info // won't transmitted otherwise var formobject = document.forms[formname]; var newfield = document.createelement('input'); newfield.type = 'hidden'; newfield.name = buttonobject.name; newfield.value = buttonobject.value; formobject.appendchild(newfield); formobject.submit(); } can familiar ie7 spot problem in code? in advance...
short answer: ie7 , spring web flow not compatible.
long answer:
not dojo 1.9 not back upwards ie 7, ie7 turns out very problematic spring web flow. because ie7 submits buttons server, regardless of button clicked, hassle pass web flow events server using ie7 , required ugly hack:
var formobject = document.forms[formname]; // rip out buttons because ie7 sucks (i=0;i<formobject.length;i++) { if (formobject[i].tagname === 'button') { formobject[i].parentnode.removechild(formobject[i]); i--; } } var newfield = document.createelement('input'); newfield.type = 'hidden'; newfield.id=buttonobject.id; newfield.name = buttonobject.name; if (buttonobject.attributes['value'] != null) { newfield.value = buttonobject.attributes['value'].value; } else { newfield.value = buttonobject.value; } formobject.appendchild(newfield); formobject.submit(); this hack rips out button objects form, adds one button clicked hidden field, , submits form.
javascript html internet-explorer dojo
No comments:
Post a Comment