1 description('Test setting the search attribute of the URL in HTMLAnchorElement .'); 2 3 var a = document.createElement('a'); 4 5 debug("Set search without '?'"); 6 a.href = "https://www.mydomain.com/path/?key=value"; 7 a.search = "value=key"; 8 shouldBe("a.href", "'https://www.mydomain.com/path/?value=key'"); 9 10 // IE8 does not encode spaces in search string 11 debug("Set search that starts with '?' and contains spaces"); 12 a.href = "https://www.mydomain.com/path/?key=value"; 13 a.search = "?val ue= key?"; 14 shouldBe("a.href", "'https://www.mydomain.com/path/?val%20ue=%20key?'"); 15 16 debug("Set search to a malformed URL"); 17 a.href = "s:www.mydomain.com/path/"; 18 a.search = "%"; 19 shouldBe("a.href", "'s:www.mydomain.com/path/?%'"); 20 21 // IE8 throws "The URL is invalid" exception. 22 debug("Set search containing '#'"); 23 try { 24 a.href = "https://www.mydomain.com/path/?key=value#hash"; 25 a.search = "?value#key"; 26 shouldBe("a.href", "'https://www.mydomain.com/path/?value%23key#hash'"); 27 } catch(e) { 28 debug("Exception: " + e.description); 29 } 30 31 debug("Set search to a malformed URL"); 32 a.href = "bad:/|/url"; 33 a.search = "?value=key"; 34 shouldBe("a.href", "'bad:/|/url?value=key'"); 35 36 // IE8 converts null to "null", which is not the right thing to do. 37 debug("Set search to null"); 38 a.href = "https://www.mydomain.com/path/?key=value"; 39 a.search = null; 40 shouldBe("a.href", "'https://www.mydomain.com/path/'"); 41 42 // Firefox 3.5.2 Removes the '?', and it shouldn't, per 43 // http://dev.w3.org/html5/spec/infrastructure.html#url-decomposition-idl-attributes . 44 debug("Set search to empty string"); 45 a.href = "https://www.mydomain.com/path/?key=value"; 46 a.search = ""; 47 shouldBe("a.href", "'https://www.mydomain.com/path/?'"); 48 49 var successfullyParsed = true; 50