Go to
Result:
90/100
 

The score equals 100 minus the sum of the costs of failures (see the help page). Here is the repartition of costs per failure severity:

Severity Number Total cost
severe 1 10pt
Page Size:
1.2KB
document: 1.2KB
Size Type URI
1.2KB document Resource under test
Network:
1 request
document: 1

Check out W3C's training courses for mobile!

Help on the checker is available.

Where to start...

1 severe error(s) detected!
While severe errors may not prevent the rendering of the page on mobile devices, they negatively impact the user experience. They should be addressed first. Here is the error:

Follow the links above for a detailed description of each message and suggestions to fix the underlying problem.

Detailed report

  1. Structure of the page

    Markup validity does not ensure that tags are used appropriately. For instance, given the lack of support for nested tables in mobile browsers and the small screen sizes, using tables for layout will not work on mobile devices. The same goes with the use of applets, frames, pop-ups, and so on. The size of the page is also a very important aspect to keep in mind when designing mobile-friendly pages.

    1. Scripting

      Scripts can be used as long as scripting support is not required, since many mobile browsers have limited or no support for Javascripts.

      • Javascript links provide no alternatives for mobile browsers that do not support scripting. The link will display an error message when scripting is not supported or not enabled, and the user cannot continue to browse the site.
        Use regular links and register an onclick event listener in the script, separated from the content of the page, to enhance the functionality when the browser supports scripting.
        Triggered by the resource under test:
        … <a href="javascript:goto('javascript_target.html')">Bad javascript link</a>
        Related best practice:
        [OBJECTS_OR_SCRIPT] Do not rely on embedded objects or script.
      • Scripting can be used, but shouldn't be relied upon, since many mobile devices do not support or hardly support scripting. The page should still be usable when scripting is not enabled.
        Use scripting to enhance your page, but degrade gracefully when scripting is not supported.
        Triggered by the resource under test:
        … <script type="text/javascript"> function goto(page) { window.location.href = page; } function fillSelect() { var d = document; var sel = d.getElementById('sel'); var opt; if (sel) { for (i=1; i!=5; i++) { opt = d.createElement('option'); opt.appendChild(d.createTextNode('Option ' + i)); sel.appendChild(opt); } sel.removeChild(sel.firstChild); } } </script>
        Related best practice:
        [OBJECTS_OR_SCRIPT] Do not rely on embedded objects or script.
      • Using event attributes means that scripts and content are mixed in the page.
        Register the events listeners in the script, separated from the content of the page.
        Triggered by the resource under test:
        … <body onload="fillSelect()"><!-- ...skipped by mobileOK checker... ---></body>
        Related best practice:
        [OBJECTS_OR_SCRIPT] Do not rely on embedded objects or script.

↑ Top

  1. At the HTTP level

    The source of the messages in this category is to be found in the HTTP headers that were sent along with the page. They are most likely due to the Web server configuration for static files, or the way the server-side scripts are written for dynamic content. Making sure that HTTP headers are correctly defined is essential in a mobile context with a usually low bandwidth and high latency.

    • Properly handling conditional GET requests based on the Last-Modified header allows browsers to reduce the amount of data to download. When a resource has not been modified since the last retrieval, the server should send back a 304 Not Modified when a request comes with If-Modified-Since.
      See Mark Nottingham's tutorial on caching to learn how to configure a server or adapt a server-side script to handle conditional GET requests.
      Triggered by the resource under test.
      Related best practice:
      [CACHING] Provide caching information in HTTP responses.
    • Properly handling conditional GET requests based on the ETag header allows browsers to reduce the amount of data to download. When a resource has not been modified since the last retrieval, the server should send back a 304 Not Modified when a request comes with If-None-Match.
      See Mark Nottingham's tutorial on caching to learn how to configure a server or adapt a server-side script to handle conditional GET requests.
      Triggered by the resource under test.
      Related best practice:
      [CACHING] Provide caching information in HTTP responses.
    • The recommended media type for serving XHTML is application/xhtml+xml. More browsers are likely to support that media type, and optimize the rendering for it. application/vnd.wap.xhtml+xml is widely used and supported in mobile networks as well but is unlikely to be supported by non-mobile browsers.
      See how to properly configure server mime types. If the page under test uses a non-XML version of HTML, you should first consider switching to XHTML. In any case, do not serve a non-XML version of HTML with an application/xhtml+xml media type.
      Beware: some browsers have no support for application/xhtml+xml (e.g. Internet Explorer) and prompt users to download pages served as such. You should not serve XHTML content to browsers that do not support it. Use Content Negotiation to match the browser's capabilities. See the XHTML Media Types - Second Edition W3C note for more information and in particular the Compatibility Guidelines to follow to have XHTML documents rendered on both XHTML-aware and HTML-only user agents.
      Triggered by the resource under test:
      served as text/html
      Related best practice:
      [CONTENT_FORMAT_SUPPORT] Send content in a format that is known to be supported by the device.

↑ Top