mirror of
https://github.com/netsurf-browser/netsurf
synced 2025-01-18 16:49:18 +03:00
implement document.URL and document.documentURI
This commit is contained in:
parent
99f93da0f3
commit
04825c62df
@ -45,8 +45,8 @@ JSObject *jsapi_InitClass_Location(JSContext *cx, JSObject *parent);
|
|||||||
JSObject *jsapi_new_Location(JSContext *cx,
|
JSObject *jsapi_new_Location(JSContext *cx,
|
||||||
JSObject *window,
|
JSObject *window,
|
||||||
JSObject *parent,
|
JSObject *parent,
|
||||||
struct browser_window *bw,
|
nsurl *url,
|
||||||
nsurl *url);
|
html_content *htmlc);
|
||||||
|
|
||||||
|
|
||||||
JSObject *jsapi_InitClass_Document(JSContext *cx, JSObject *parent);
|
JSObject *jsapi_InitClass_Document(JSContext *cx, JSObject *parent);
|
||||||
|
@ -56,6 +56,7 @@ api finalise %{
|
|||||||
}
|
}
|
||||||
%}
|
%}
|
||||||
|
|
||||||
|
|
||||||
getter location %{
|
getter location %{
|
||||||
if (!JSVAL_IS_VOID(JSAPI_PROP_RVAL(cx,vp))) {
|
if (!JSVAL_IS_VOID(JSAPI_PROP_RVAL(cx,vp))) {
|
||||||
/* already created - return it */
|
/* already created - return it */
|
||||||
@ -64,10 +65,27 @@ getter location %{
|
|||||||
jsret = jsapi_new_Location(cx,
|
jsret = jsapi_new_Location(cx,
|
||||||
NULL,
|
NULL,
|
||||||
NULL,
|
NULL,
|
||||||
private->htmlc->bw,
|
llcache_handle_get_url(private->htmlc->base.llcache),
|
||||||
llcache_handle_get_url(private->htmlc->base.llcache));
|
private->htmlc);
|
||||||
%}
|
%}
|
||||||
|
|
||||||
|
getter URL %{
|
||||||
|
jsval loc;
|
||||||
|
jsval jsstr = JSVAL_NULL;
|
||||||
|
if (JS_GetProperty(cx, obj, "location", &loc) == JS_TRUE) {
|
||||||
|
JS_GetProperty(cx, JSVAL_TO_OBJECT(loc), "href", &jsstr);
|
||||||
|
}
|
||||||
|
jsret = JSVAL_TO_STRING(jsstr);
|
||||||
|
%}
|
||||||
|
|
||||||
|
getter documentURI %{
|
||||||
|
jsval loc;
|
||||||
|
jsval jsstr = JSVAL_NULL;
|
||||||
|
if (JS_GetProperty(cx, obj, "location", &loc) == JS_TRUE) {
|
||||||
|
JS_GetProperty(cx, JSVAL_TO_OBJECT(loc), "href", &jsstr);
|
||||||
|
}
|
||||||
|
jsret = JSVAL_TO_STRING(jsstr);
|
||||||
|
%}
|
||||||
|
|
||||||
getter cookie %{
|
getter cookie %{
|
||||||
char *cookie_str;
|
char *cookie_str;
|
||||||
|
@ -32,19 +32,27 @@ binding location {
|
|||||||
|
|
||||||
interface Location; /* Web IDL interface to generate */
|
interface Location; /* Web IDL interface to generate */
|
||||||
|
|
||||||
private "struct browser_window *" bw;
|
|
||||||
private "nsurl *" url;
|
private "nsurl *" url;
|
||||||
|
private "struct html_content *" htmlc;
|
||||||
|
|
||||||
|
property unshared href;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
operation reload %{
|
operation reload %{
|
||||||
browser_window_reload(private->bw, false);
|
browser_window_reload(private->htmlc->bw, false);
|
||||||
%}
|
%}
|
||||||
|
|
||||||
|
|
||||||
getter href %{
|
getter href %{
|
||||||
char *url_s = NULL;
|
char *url_s = NULL;
|
||||||
size_t url_l;
|
size_t url_l;
|
||||||
|
|
||||||
|
if (!JSVAL_IS_VOID(JSAPI_PROP_RVAL(cx,vp))) {
|
||||||
|
/* already created - return it */
|
||||||
|
return JS_TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
nsurl_get(private->url, NSURL_COMPLETE, &url_s, &url_l);
|
nsurl_get(private->url, NSURL_COMPLETE, &url_s, &url_l);
|
||||||
if (url_s != NULL) {
|
if (url_s != NULL) {
|
||||||
jsret = JS_NewStringCopyN(cx, url_s, url_l);
|
jsret = JS_NewStringCopyN(cx, url_s, url_l);
|
||||||
|
31
test/js/document-url.html
Normal file
31
test/js/document-url.html
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>document location and URL interface</title>
|
||||||
|
<link rel="stylesheet" type="text/css" href="tst.css">
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<h1>document location and URL interface</h1>
|
||||||
|
|
||||||
|
<h2>Document location enumeration</h2>
|
||||||
|
<script>
|
||||||
|
function output(x,y) {
|
||||||
|
document.body.appendChild(document.createTextNode(x));
|
||||||
|
document.body.appendChild(document.createTextNode("("));
|
||||||
|
if (y != undefined) {
|
||||||
|
document.body.appendChild(document.createTextNode(y.length));
|
||||||
|
}
|
||||||
|
document.body.appendChild(document.createTextNode(") = "));
|
||||||
|
document.body.appendChild(document.createTextNode(y));
|
||||||
|
document.body.appendChild(document.createElement('br'));
|
||||||
|
}
|
||||||
|
|
||||||
|
for(var key in document.location) {
|
||||||
|
output(key, document.location[key]);
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
<h2>Document URL</h2>
|
||||||
|
<script>output("document.URL", document.URL);</script>
|
||||||
|
<h2>DocumentURI</h2>
|
||||||
|
<script>output("document.documentURI", document.documentURI);</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
Loading…
Reference in New Issue
Block a user