Line 25:
Line 25:
*CSS 3 (some functionality is unavailable)
*CSS 3 (some functionality is unavailable)
*DOM Levels 1-3
*DOM Levels 1-3
−
*ECMAScript
+
*ECMAScript (partial support for ECMA-262 5th Edition)
−
*XMLHttpRequest
+
*XMLHttpRequest Level 2
*Canvas Element (some functionality is unavailable)
*Canvas Element (some functionality is unavailable)
Line 62:
Line 62:
<script type="text/javascript">
<script type="text/javascript">
−
window.onload=function()
+
if (navigator.userAgent.indexOf('Nintendo 3DS') == -1) { //If the UserAgent is not "Nintendo 3DS"
−
{
+
location.replace('http://www.3dbrew.org'); //Redirect to an other page
−
if (navigator.userAgent.indexOf('Nintendo 3DS') == -1) //If the UserAgent is not "Nintendo 3DS"
+
}
−
{
−
location.replace('http://www.3dbrew.org'); //Redirect to an other page
−
}
−
}
</script>
</script>
−
* You can check navigator.platform=="Nintendo 3DS" as well (harder to spoof).
+
* You can check <em>navigator.platform=="Nintendo 3DS"</em> as well.
+
=== Scrolling ===
−
=== Key Codes ===
+
Scrolling can be altered by modifying <em>document.body.scrollTop</em> and <em>document.body.scrollLeft</em>. However, there are drawbacks related to working with these properties:
+
+
* Both properties return 0 when accessed
+
* Setting one property resets the other property's scroll position
+
+
In order to set both at the same time (without either resetting to 0), use <em>window.scrollTo</em>.
+
+
=== Events ===
+
==== Key Events ====
+
The following buttons trigger the <em>onkeydown</em>, <em>onkeypress</em> and <em>onkeyup</em> events:
{|class="wikitable" width="20%"
{|class="wikitable" width="20%"
Line 89:
Line 95:
| 40 || Down
| 40 || Down
|}
|}
+
+
The events cannot have their default action cancelled. Other buttons do not trigger key events.
+
+
==== Touch/Mouse Events ====
+
<em>onmousedown</em>, <em>onmouseup</em> & <em>onclick</em> are all triggered by the browser. However, the <em>onmousedown</em> event doesn't trigger until you've held the stylus on the screen for ~2 seconds, which is when text selection mode is activated. The events cannot have their default action cancelled.
+
+
The <em>onmousemove</em> and common touch/gesture events are not supported.
== Screen Resolution ==
== Screen Resolution ==
Line 99:
Line 112:
== Using Both Screens ==
== Using Both Screens ==
−
−
Here's how your webpage can span both screens:
−
−
# Ensure that your page takes up exactly 320x432 pixels.
−
# Add the following JavaScript just before the </body> tag:
−
−
<script>document.body.scrollTop = 220;</script>
Generally the easiest way to accomplish the correct layout is to create HTML elements that "contain" the top and bottom screens. Here's an example:
Generally the easiest way to accomplish the correct layout is to create HTML elements that "contain" the top and bottom screens. Here's an example:
Line 111:
Line 117:
<html>
<html>
<head>
<head>
−
<meta name="viewport" content="width=320">
+
<meta name="viewport" content="width=400">
<style>
<style>
body { margin: 0px; }
body { margin: 0px; }
−
#topscreen { width: 320px; height: 220px; overflow: hidden; }
+
#topscreen { width: 400px; height: 220px; overflow: hidden; }
−
#bottomscreen { width: 320px; height: 212px; overflow: hidden; }
+
#bottomscreen { width: 320px; height: 212px; overflow: hidden; margin: 0 auto; }
</style>
</style>
</head>
</head>
Line 124:
Line 130:
</html>
</html>
−
This scheme allows the page to be easily manipulated through JavaScript.
+
This scheme allows the page to be easily manipulated through JavaScript. In order to have the window snap to the correct position, use the following JavaScript code:
+
+
window.setInterval(function () {
+
window.scrollTo(40, 220);
+
}, 50);
+
+
This automatically resets the position if the user accidentally scrolls the page.
==Example Sites==
==Example Sites==