I've been wrestling with a bug in one of my modules for AIM Pages for_ever_, and just found a fix today. I created this well-intentioned module called code snippet that allows you to paste in markup and it'll get inserted into the DOM. This is really just a stopgap to allow people to add stuff that a module doesn't exist for yet. I never should have written it. Do you know how bad DOM support is in IE? It's awful!
The big problem is that people wanted/needed to insert script elements with inline script using the code snippet module, and I couldn't figure out a good way to do it (ok, any way, good or otherwise). Just adding them to the DOM using innerHTML doesn't work. IE won't allow you to create a new script element and set the text content to the code.
Today, I stumbled on a message board post that hints at the answer. What's the answer?
Create a new script element, and set the text property to the script content and then append it to the body. Voila, actual evaluated javascript! Here's an example:
var b=document.getElementsByTagName("body")[0];
var txt="function doIt(msg) {alert(msg)}";
var scr=document.createElement("script");
scr.setAttribute("type","text/javascript");
scr.text=txt;
b.appendChild(scr);
Enjoy! Oh, and the fixed version of the module isn't live yet. I'm letting the QA guys look at it first before I unleash it on an unsuspecting world.
| Your Name: | |
| Your E-mail: | |
| Your Site: | |
| Your Comment: | |
You can use Textile formatting in your comments (but no HTML). Here's a quick cheatsheet:
This is the personal site and weblog of Kevin Lawver and Jen Lawver. The views expressed on this site are our's and not those of our family, friends or employers. license
Powered by: Movable Type
Hosted by DreamHost