I have the following code that works in FF / Chrome
var stack = [Array.prototype.slice.call(document.getElementsByTagName("body")[0].childNodes)], nodes, node, parent, text, offset; while (stack.length) { nodes = stack.pop(); for (var i=0, n=nodes.length; i<n; ++i) { node = nodes[i]; switch (node.nodeType) { case Node.ELEMENT_NODE: if (node.nodeName.toUpperCase() !== "SCRIPT") { stack.push(Array.prototype.slice.call(node.childNodes)); } break; case Node.TEXT_NODE: text = node.nodeValue; offset = text.indexOf("[test="); if (offset >= 0 && text.substr(offset).match(/^(\[test=(\d+)\])/)) { parent = node.parentNode; var before = document.createTextNode(text.substr(0, offset)); link = document.createElement("a"), after = document.createTextNode(text.substr(offset + RegExp.$1.length)); link.appendChild(document.createTextNode(text.substr(offset, RegExp.$1.length))); link.setAttribute("href", "http://example.com/" + RegExp.$2); parent.insertBefore(after, node); parent.insertBefore(link, after); parent.insertBefore(before, link); parent.removeChild(node); stack.push([after]); } } } }
Basically, what does he do if he finds [test = 25] on the page, he will convert it to a link that points to example.com/25
In IE, I get the following error: JScript object expected in the first line:
var stack = [Array.prototype.slice.call(document.getElementsByTagName("body")[0].childNodes)], nodes, node, parent, text, offset;
This error occurs in both IE7 and IE8.
Any help would be appreciated.
Thanks.
javascript internet-explorer
Rob
source share