| <head> |
| <script> |
| if (window.testRunner) |
| testRunner.dumpAsText(); |
| |
| function print(message, color) |
| { |
| var paragraph = document.createElement("div"); |
| paragraph.appendChild(document.createTextNode(message)); |
| paragraph.style.fontFamily = "monospace"; |
| if (color) |
| paragraph.style.color = color; |
| document.getElementById("console").appendChild(paragraph); |
| } |
| |
| function run(a) |
| { |
| print(a); |
| try { |
| eval(a); |
| } catch(e) { |
| print(e); |
| } |
| } |
| |
| function shouldBe(a, b) |
| { |
| var evalA; |
| try { |
| evalA = eval(a); |
| } catch(e) { |
| evalA = e; |
| } |
| |
| if (evalA == b) |
| print("PASS: " + a + " should be " + b + " and is.", "green"); |
| else |
| print("FAIL: " + a + " should be " + b + " but instead is " + evalA + ".", "red"); |
| } |
| </script> |
| </head> |
| <body> |
| Test that innerHTML does not mangle javascript: urls. |
| <div id=console></div> |
| <div id=jsurltest><a href=' |
| javascript:test(&37;3C!--D--&37;3E)'>link</a></div> |
| <script> |
| var r = document.getElementById('jsurltest'); |
| run("r.innerHTML = r.innerHTML.replace(/&37;3C!--D--&37;3E/g, 123)"); |
| shouldBe("r.innerHTML.indexOf('javascript:test(123)') > -1", true); |
| run("r.firstChild.setAttribute('href', 'javascript:test(\"text<\")')"); |
| shouldBe("r.innerHTML.indexOf('javascript:test(\"text<\")') > -1", true); |
| run('r.firstChild.setAttribute("href", "javascript:test(\'text>\')")'); |
| shouldBe('r.innerHTML.indexOf("javascript:test(\'text>\')") > -1', true); |
| testString = 'javascript:test(\'text&\',"test2&")'; |
| print("testString = " + testString); |
| run('r.firstChild.setAttribute("href", testString)'); |
| shouldBe('r.innerHTML.indexOf("javascript:test(\'text&\',"test2&")") > 1', true); |
| |
| run("r.firstChild.setAttribute('href', 'http://www.google.fi/search?q=scarlett johansson&meta=&btnG=Google-haku')"); |
| print(r.innerHTML); |
| </script> |