Added webkit detection scripts and info on how to use them.
authorjdevalk <jdevalk@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 18 Apr 2006 21:56:31 +0000 (21:56 +0000)
committerjdevalk <jdevalk@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 18 Apr 2006 21:56:31 +0000 (21:56 +0000)
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@13958 268f45cc-cd09-0410-ab3c-d52691b4dbfc

WebKitSite/ChangeLog
WebKitSite/nav.inc
WebKitSite/webdevelopers/index.html [new file with mode: 0644]
WebKitSite/webdevelopers/webkit_version.html [new file with mode: 0644]
WebKitSite/webdevelopers/webkit_version.js [new file with mode: 0644]
WebKitSite/webdevelopers/webkit_version_xl.html [new file with mode: 0644]
WebKitSite/webdevelopers/webkit_version_xl.js [new file with mode: 0644]

index f466de75abab36497a40d2c98e821ca9085bdf2d..34bd1dad3c106b7b34f661fff993353a0400d1ba 100644 (file)
@@ -1,3 +1,18 @@
+2006-04-18  Joost de Valk  <jdevalk@opendarwin.org>
+
+        Reviewed by Eric Seidel .
+
+        Added WebKit detection scripts and a small howto + a new section to our
+        website: Web Developers.
+
+        * nav.inc:
+        * webdevelopers: Added.
+        * webdevelopers/index.html: Added.
+        * webdevelopers/webkit_version.html: Added.
+        * webdevelopers/webkit_version.js: Added.
+        * webdevelopers/webkit_version_xl.html: Added.
+        * webdevelopers/webkit_version_xl.js: Added.
+
 2006-04-17  Joost de Valk  <jdevalk@opendarwin.org>
 
         Reviewed by ggaren.
 2006-04-17  Joost de Valk  <jdevalk@opendarwin.org>
 
         Reviewed by ggaren.
index ea3db4e8cceeafbce4a98dc2d0973c4fa50381c2..9197b7c19b49aa05eebe3a1a9c64b3e6e1c350d7 100644 (file)
         <li><a href="/projects/">Projects</a></li>
         <li><a href="/coding/coding-style.html">Code Style Guidelines</a></li>
 
         <li><a href="/projects/">Projects</a></li>
         <li><a href="/coding/coding-style.html">Code Style Guidelines</a></li>
 
-        <li class="subtitle">Testing</li>
+        <li class="subtitle">Web Developers</li>
+
+        <li><a href="/webdevelopers/">Detecting WebKit</a></li>
+        
+       <li class="subtitle">Testing</li>
 
         <li><a href="/quality/testing.html">Regression Testing</a></li>
         <li><a href="/quality/leakhunting.html">Leak Hunting</a></li>
 
         <li><a href="/quality/testing.html">Regression Testing</a></li>
         <li><a href="/quality/leakhunting.html">Leak Hunting</a></li>
diff --git a/WebKitSite/webdevelopers/index.html b/WebKitSite/webdevelopers/index.html
new file mode 100644 (file)
index 0000000..4d9816e
--- /dev/null
@@ -0,0 +1,26 @@
+<?php 
+$title = "Detecting WebKit with JavaScript";
+include("../header.inc"); 
+?>
+<h2>Detecting WebKit with JavaScript</h2>
+
+<p>
+  Since quite some bugs have been fixed in WebKit, you might want to recognize the 
+  different versions of WebKit browsing your site, and adapt styling to that. To make 
+  this work easier for you, we have created JavaScript libraries that do just this, 
+  and example pages to show you how to use it.
+</p>
+<p>
+  There are two versions, the normal and the XL version. You will probably only need the 
+  normal version, but if you need more info, the XL version might be just what you're 
+  looking for. <a href="http://developer.apple.com/internet/safari/uamatrix.html">This matrix of WebKit versions and OS X versions</a> could be very useful to you too.
+</p>
+<ul>
+       <li><a href="webkit_version.html">Example page for normal library.</a></li>
+       <li><a href="webkit_version.js">The normal library.</a></li>
+       <li><a href="webkit_version_xl.html">Example page for the XL library.</a></li>
+       <li><a href="webkit_version_xl.js">The XL library.</a></li>
+</ul>
+<?php
+include("../footer.inc");
+?>
diff --git a/WebKitSite/webdevelopers/webkit_version.html b/WebKitSite/webdevelopers/webkit_version.html
new file mode 100644 (file)
index 0000000..2ffdb1c
--- /dev/null
@@ -0,0 +1,20 @@
+<html>
+<head>
+  <script type="text/javascript" src="webkit_version.js"></script>
+  <title>WebKit version detection sample page</title>
+</head>
+
+<body>
+  <h1>
+    <script type="text/javascript">
+      var version = get_webkit_version();              
+      document.write(version['major']+" "+version['minor']);
+      if (version['is_nightly']) {
+        document.write(" nightly build");
+      } else {
+        document.write(" system WebKit");
+      }
+    </script>
+  </h1>
+</body>
+</html>
diff --git a/WebKitSite/webdevelopers/webkit_version.js b/WebKitSite/webdevelopers/webkit_version.js
new file mode 100644 (file)
index 0000000..238532e
--- /dev/null
@@ -0,0 +1,23 @@
+function parse_webkit_version(version) {
+  var bits = version.split(".");
+  var is_nightly = (version[version.length - 1] == "+");
+  if (is_nightly) {
+    var minor = "+";
+  } else {
+    var minor = parseInt(bits[1]);
+    // If minor is Not a Number (NaN) return an empty string
+    if (isNaN(minor)) {
+      minor = "";
+    }
+  }
+  return {major: parseInt(bits[0]), minor: minor, is_nightly: is_nightly};
+}
+
+function get_webkit_version() {
+  var regex = new RegExp("\\(.*\\) AppleWebKit/(.*) \\((.*)");
+  var matches = regex.exec(navigator.userAgent);
+  if (matches) {
+    var webkit_version = parse_webkit_version(matches[1]);    
+  } 
+  return {major: webkit_version['major'], minor: webkit_version['minor'], is_nightly: webkit_version['is_nightly']};
+}  
\ No newline at end of file
diff --git a/WebKitSite/webdevelopers/webkit_version_xl.html b/WebKitSite/webdevelopers/webkit_version_xl.html
new file mode 100644 (file)
index 0000000..a3c069a
--- /dev/null
@@ -0,0 +1,20 @@
+<html>
+<head>
+  <script type="text/javascript" src="webkit_version_xl.js"></script>
+  <title>WebKit version detection sample page</title>
+</head>
+
+<body>
+  <h1>
+    <script type="text/javascript">
+      var version = get_webkit_version();              
+      document.write(version['major']+" "+version['minor']+" "+version['browser']);
+      if (version['is_nightly']) {
+        document.write(" nightly build");
+      } else {
+        document.write(" system WebKit");
+      }
+    </script>
+  </h1>
+</body>
+</html>
diff --git a/WebKitSite/webdevelopers/webkit_version_xl.js b/WebKitSite/webdevelopers/webkit_version_xl.js
new file mode 100644 (file)
index 0000000..b3c1ca0
--- /dev/null
@@ -0,0 +1,101 @@
+/* 
+Copyright (C) 2006 Joost de Valk, http://www.joostdevalk.nl/.  All rights reserved.
+Copyright (C) 2006 Mark Rowe, http://bdash.net.nz/.  All rights reserved.
+Copyright (C) 2006 Apple Computer, Inc.  All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
+CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+Script used for recognizing Safari / Shiira / WebKit. 
+A matrix of WebKit versions and OS X versions can be found at:
+http://developer.apple.com/internet/safari/uamatrix.html .
+*/
+
+function parse_webkit_version(version)
+{
+  var bits = version.split(".");
+  var is_nightly = (version[version.length - 1] == "+");
+  if (is_nightly) {
+    var minor = "+";
+  } else {
+    var minor = parseInt(bits[1]);
+    // If minor is Not a Number (NaN) return an empty string
+    if (isNaN(minor)) {
+      minor = "";
+    }
+  }
+  return {major: parseInt(bits[0]), minor: minor, is_nightly: is_nightly};
+}
+
+function get_webkit_version()
+{
+  var browser = "";
+  
+  // Check for Safari
+  var regex = new RegExp("Mozilla/5.0 \\(.*\\) AppleWebKit/(.*) \\(KHTML, like Gecko\\) Safari/(.*)");
+  var matches = regex.exec(navigator.userAgent);
+  if (matches) {
+    var browser = "Safari "+matches[2];
+    var webkit_version = parse_webkit_version(matches[1]);    
+  } 
+  
+  // Check for Shiira
+  var regex = new RegExp("Mozilla/5.0 \\(.*\\) AppleWebKit/(.*) \\(KHTML, like Gecko\\) Shiira/(.*) Safari/(.*)");
+  var matches = regex.exec(navigator.userAgent);
+  if (matches) {
+    var browser = "Shiira "+matches[2];
+    var webkit_version = parse_webkit_version(matches[1]);
+  } 
+
+  // Check for OmniWeb 4 or 5
+  var regex = new RegExp("Mozilla/5.0 \\(.*\\) AppleWebKit/(.*) \\(KHTML, like Gecko\\) OmniWeb/v(.*) ");
+  var matches = regex.exec(navigator.userAgent);
+  if (matches) {
+    var browser = "OmniWeb "+matches[2];
+    var webkit_version = parse_webkit_version(matches[1]);
+  }
+
+  // Check for OmniWeb 5.1 and up
+  var regex = new RegExp("Mozilla/5.0 \\(.*\\) AppleWebKit/(.*) \\(KHTML, like Gecko, Safari\\) OmniWeb/v(.*) ");
+  var matches = regex.exec(navigator.userAgent);
+  if (matches) {
+    var browser = "OmniWeb "+matches[2];
+    var webkit_version = parse_webkit_version(matches[1]);
+  }
+
+  // Check for NetNewsWire 2 and higher
+  var regex = new RegExp("Mozilla/5.0 \\(.*\\) AppleWebKit/(.*) (KHTML, like Gecko) NetNewsWire/(.*)");
+  var matches = regex.exec(navigator.userAgent);
+  if (matches) {
+    var browser = "NetNewsWire "+matches[2];
+    var webkit_version = parse_webkit_version(matches[1]);
+  }
+
+  // Check for RealPlayer
+  var regex = new RegExp("Mozilla/5.0 \\(.*\\) AppleWebKit/(.*) (KHTML, like Gecko) RealPlayer/(.*)");
+  var matches = regex.exec(navigator.userAgent);
+  if (matches) {
+    var browser = "RealPlayer "+matches[2];
+    var webkit_version = parse_webkit_version(matches[1]);
+  }
+
+  return {major: webkit_version['major'], minor: webkit_version['minor'], is_nightly: webkit_version['is_nightly'], browser: browser};
+}