1. Safariや他のMacブラウザの言語設定を調べるにはどうすればよいでしょうか?GeckoベースのブラウザであるSafariは
function showLanguage(){
var languageinfo = navigator.language ? navigator.language : navigator.userLanguage;
alert ("And the Language is: " + languageinfo);
}
この関数の動作を次に示します: 2. Safariのユーザエージェント文字列を教えてください。PPCプロセッサで動作する完全なSafariユーザエージェント文字列は次の通りです。 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en-us) AppleWebKit/XX (KHTML, like Gecko) Safari/YY インテルプロセッサでは次の通りです。 Mozilla/5.0 (Macintosh; U; Intel Mac OS X; en-us) AppleWebKit/XX (KHTML, like Gecko) Safari/YY どちらの場合も、"XX"はSafariによって使用されているWebテクノロジーフレームワークのビルドバージョン、"YY"はSafariアプリケーションのビルドバージョンです。 サイトにアクセスしているクライアントの正確なブラウザとバージョンを特定する必要がある場合は、文字列中の SafariとWebKitのビルドバージョンの履歴情報のリストに示されているように、どちらのバージョン番号にもマイナーバージョンとサブバージョン番号が含まれていることが考えられます。 例: また、Safariで使用されているレンダリングエンジンはNetscapeと非常によく似た動作をするため、SafariのJavaScriptエンジンは
JavaScriptオブジェクトの、お使いのブラウザの値を表示してみてください: 3. SafariはDHTMLをサポートしていますか?Safariは、JavaScriptを介してページ上のほとんどの要素にアクセスできる、W3C DOM-2を通じてDHTMLをサポートしています。詳細については、アップルインターネットデベロッパ向けの、DOM-2の使用に関する2つのパートからなる記事、Part IおよびPart IIを参照してください。 DHTMLがサポートされているかをスクリプトを使用してテストする場合は、
if (document.getElementById)
{
// ブラウザはW3C DOMをサポート
}
古いブラウザは、別のDOMを通じてDHTMLをサポートします。Internet Explorer 4は、
if (document.getElementById || document.all || document.layers)
{
//ブラウザはDHTMLを処理できる
}
次のように表示されます: 4. オブジェクトにアクセスするためのメソッドはどのように決めたらよいのでしょうか?ブラウザの機能をテストするにはオブジェクト検出が最適な方法です。上記の例は、オブジェクト検出の簡単な例であり、オブジェクト( 5. 自分のページ(およびcookies)がSafariにキャッシュされるのを防ぐにはどうすればよいのでしょうか?Safariのパフォーマンスの大部分は、コンテンツのキャッシュを効率よく使用することで達成されています。cookiesを書き出すページも含め、キャッシュされるのを避けたいページがある場合は、ページを提供するときに次のヘッダを確実に記述しておくようにします。
// PHP の例 - ページの先頭に含める
<? php
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); // 過去の日付
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); // 常に変更される
header("Cache-Control: no-store, no-cache, must-revalidate, max-age=0"); // HTTP/1.1
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache"); // HTTP/1.0
?>
// JSP の例 - ページコンテンツを記述する前に呼び出す
response.setHeader("Cache-Control","no-cache"); // HTTP 1.1
response.setHeader("Pragma","no-cache"); // HTTP 1.0
response.setDateHeader ("Expires", 0); // プロキシサーバ上のキャッシュも同様に防ぐ
SafariのBack/Forwardキャッシュ(訪れた人がブラウザの「戻る」ボタンや「進む」ボタンを押した時点から蓄積されるキャッシュ)も、ページにフレームを含めることによって阻止することができます。フレームベースのページは、Back/Forwardキャッシュには保存されず、非フレームベースのページも下に示す不可視のiframeを追加することによって同じように動作します。 <iframe style="height:0px;width:0px;visibility:hidden" src="about:blank"> this frame prevents back forward cache </iframe> 6. JavaScriptを使ってcookiesの有無をテストするにはどうすればよいのでしょうか?Safariには、cookieの書き込みを、ユーザが選択した(「ナビゲートした」)ページだけに限定するという旧来からのcookieポリシーが導入されています。このデフォルトの旧来からのポリシーにより、cookiesを書き込もうとするフレームベースのサイトが混乱し、失敗することがあります。何らかのバグが原因でcookiesが書き込まれないと仮定する前に、Safariの環境設定を確認してください。ユーザの設定であることも考えられます。 次の関数は、cookieの設定と、cookieの有無のテストを行います。
function testCookies() {
var exp = new Date();
exp.setTime(exp.getTime() + 1800000);
// 最初にテストのcookieを書き込む
setCookie("cookies", "cookies", exp, false, false, false);
if (document.cookie.indexOf('cookies') != -1) {
alert("Got Cookies!");
}
else {
alert("No Cookies!");
}
// テストのcookieをここで削除
exp = new Date();
exp.setTime(exp.getTime() - 1800000);
setCookie("cookies", "cookies", exp, false, false, false);
}
function setCookie(name, value, expires, path, domain, secure) {
var curCookie = name + "=" + escape(value) +
((expires) ? "; expires=" + expires.toGMTString() : "") +
((path) ? "; path=" + path : "") +
((domain) ? "; domain=" + domain : "") +
((secure) ? "; secure" : "");
document.cookie = curCookie;
}
試してみてください: 7. Favicon(アドレスバー上の小さなアイコン)を追加するにはどうすればよいのでしょうか?<head>タグ内に次の行を追加すると、サイトにFaviconを追加できます。 <link rel="icon" href="favicon.ico" type="image/x-icon" /> <link rel="shortcut icon" href="favicon.ico" type="image/x-icon" /> Faviconの作成方法を学習したい場合は、こちらのチュートリアルに目を通してください。 8. Safariがアプレットの実行に使用しているJavaのバージョンを教えてください。Safariは、Mac OS Xに含まれている最新バージョンのJavaを使用しています。Javaのアップデートは、「ソフトウェアダウンロード」を通じて定期的に入手するか、またはJavaテクノロジーのページからダウンロードして入手できます。テクニカルノートの「Identifying Java on Mac OS X」に、アプレットを実行している特定のJavaのバージョンを識別する方法が説明されています。 「Javaプラグイン設定」アプリケーション(アプリケーション/ユーティリティ/Java/)を使用すると、Safariでアプレットの実行中にJavaコンソールが表示され、SafariのデフォルトのJVMが選択されます。 9. Javaが使用可能かどうかを調べるにはどうすればよいのでしょうか?SafariはJavaアプレットをサポートしていますが、ユーザによってはその使用を無効にしたい場合があります。 この関数の動作を次に示します: 10. Safariはどのようにしてサーバのタイムアウトを処理しているのですか?Mac OS X 10.3.6以前のシステムでは、Safariは、HTTPリクエストに対するレスポンスを受け取らない場合や、サーバのデータ送信が停止した場合に60秒でタイムアウトとなります。Mac OS X 10.3.6以降では、Safariは、レスポンスのタイムアウト値を1年に設定することで、60秒の制限を事実上削除しています。サーバ側で処理を完了させるには十分な時間でしょう。 11. Safariがサポートしているプラグインの種類を教えてください。Safariのすべてのバージョンで、Netscapeスタイルのプラグインをサポートしています。Safari 1.3以降では、NetscapeスタイルのプラグインとCocoaプラグインをサポートしています。クロスプラットフォームではありませんが、Cocoaプラグインは簡単に作成でき、お使いのプラグインはCocoaのフレームワークのすべてを活用できます。 Cocoaプラグインの作成に関する詳細については、「Web Kit Plug-In Programming Topic」を参照し、Xcodeに含まれているWeb Kitサンプルのディレクトリにあるサンプルプラグインを試してみてください。 Safari向けのNetscapeスタイルプラグインの作成に関する詳細については、Mac OS X用のブラウザプラグインに関するアップルのテクニカルノート、およびNetscapeの正式な『プラグインガイド』を参照してください。非常にシンプルなサンプルプラグインがありますが、プロジェクトを自身でビルドするには、Netscapeの適切なヘッダファイル「npapi.h」が必要です。 インテルベースのプロセッサへの移行に伴い、デベロッパは、Carbon、Cocoa、またはBSD APIで記述されたプラグインに対して常にUniversal Binariyを作成する必要があります。Universal Binary作成の詳細については、『Universal Binaryプログラミングガイド』を参照してください。 12. Safariプラグインはどこに置くべきでしょうか?Web Kitなど、用意したプラグインをSafariのすべてのユーザが確実に利用できるように、ブラウザプラグインは「/ライブラリ/Internet Plug-Ins/」ディレクトリに置く必要があります。 13. 自分のページがSafariで動作することを保証するにはどうすればよいのでしょうか?Safariは、W3仕様に準拠したHTMLをレンダリングします。WebベースのW3 HTML Validatorを通じて、自分のページがW3仕様に準拠しているかどうかを確認できます。この検証プログラムをファイアウォールの内側で実行する場合は、ここに示されている手順に従って確認してください。 ページにDTDを定義し、検証に合格すると、次のように表示されます。 さらに、BookmarkletやFavletは、ページの作成時にすぐに使えるようにしておくと非常に役に立つツールです。次に示すリンクをSafariのブックマークバーにドラッグしてブックマークとして保存しておくと、デバッグのときに役に立ちます。
14. SafariでJavaScriptをデバッグするにはどうすればよいのでしょうか?Safariの「Debug」メニューを使用して、JavaScriptエラーのログを記録できます。「Debug」メニューを表示するには、「ターミナル」ウインドウを開き、次のように入力します。 defaults write com.apple.Safari IncludeDebugMenu 1 Safariを起動し直し、「Debug」メニューの「Log Javascript Exceptions」メニュー項目をチェックします。Safari 1.3以降では、 「Show JavaScript Console」メニュー項目を選択すると、「JavaScript Consol」ウインドウが開いてJavaScript例外が表示されます。バージョン1.3以前のSafariの場合は、JavaScript例外は「コンソール」アプリケーション(/アプリケーション/ユーティリティ/コンソール)に表示されます。 Safari 1.3以降では、JavaScriptで
if(window.console) {
window.console.log("I think therefore I code!");
}
else {
alert("I think therefore I code!");
}
Safari 1.3以降を使用する場合は、 「JavaScript Console」を開き、ここをクリックして動作を確認してください。 15. Safariのバグをレポートするにはどうすればよいのでしょうか?Safariのバグを見つけた場合は知らせてください。バグの記録方法に関する基本事項を確認してください。また、バグレポートで最も重要な点は、問題を明確に示す、簡単に再現できる事例であることです。サイトや製品に関係なく再現可能なバグは、修正ははるかに容易です。 SafariでのWebベースアプリケーションやオンラインサービスの動作を保証することを目指しており、どこから始めたらよいか分からない場合は、デベロッパとしてサインアップして、アップルの「safaricertification」までお問い合わせください。 16. SafariでサポートされているCSSプロパティを教えてください。Safariは、ほぼ完全にCSS仕様を実装するように設計されています。しかし、いくつかのCSSプロパティは使用できず、部分的にしか実装されていないものもあります。Safariで動作しないと思われるCSSをサイトで使用している場合は、サニティチェックとしてこちらのリストを確認してください。 17. ポップアップウインドウが表示されないのはなぜでしょうか?Safariは、多くのサイトで広告に使用されている、ユーザの集中力の妨げになるようなポップアップウインドウを抑えるために、ポップアップウインドウブロッカーを実装しています。ポップアップブロッカーは、マウスクリックやキー押下など、ユーザのアクションによって開くものを除き、すべてのポップアップを遮断します。<script>タグ、onLoadハンドラ、onUnloadハンドラ、タイマーから直接開くポップアップはブロックされます。 QA時には、「Block Pop-Up Windows(ポップアップウインドウを開かない)」オプションを選択して、ユーザがよく使用するこの機能が実際に使用されたときに、機能性が損なわれないことを確認してください。 18. SafariはLive Connectをサポートしていますか?サポートしています。- Safari 1.2の実装では、最も要望の高いLive Connect、すなわち、同じページ上でのJavaアプレットとJavaScript間の通信機能をサポートしています。その動作をこちらで確認するか、サンプルをダウンロードして自身で作成してください。 Safariの実装では、Safariバージョン1.3以降において、CocoaおよびNetscapeスタイルのプラグインと、JavaScript間の通信をサポートしています。 19. SafariはXMLHttpRequestオブジェクトをサポートしていますか?サポートしています。- Safari 1.2の実装はMozillaのモデルに従っており、DOMParserを必要とするもの以外は、Mozilla.orgにあるMozillaのサンプルを正常に実行します。xmlhttprequestオブジェクトにフェッチされるコンテンツは、たいていはXMLですが、あらゆる種類のテキストデータを含むことができ、表示可能なWebページ上のドキュメントコンテンツと同じDOM呼び出しを通じて参照されます。 XMLHttpRequestオブジェクトを使ってWebページとサーバ上のXMLデータを常時接続しておく方法を学習するには、この記事を参照してください。 20. Safariはツールチップをサポートしていますか?Safariは、'title'属性が設定されているページ内の要素の上にフローティングテキストを表示する機能をサポートしています。ブラウザによっては、'alt'属性が設定されている場合にこの「ツールチップ」を表示するものもありますが、'alt'属性は、視覚障害を持つ方のための画面読み取りアプリケーションに情報を提供するために作成されており、その目的のためだけに使用されています。下の画像の上にマウスを移動して、この機能の効果を確認してください。 21. SafariはXSLTをサポートしていますか?Safari 1.3以降では、ロード時にXMLページのXSL変換をサポートしています。XSLTのサポートは、XMLページの先頭に埋め込まれた次のXSLページ処理命令に限られています。 <?xml version="1.0" ?> <?xml-stylesheet type="text/xsl" href="your_transform_file_here.xsl" ?> HTMLページ内の任意のXMLに適用するためにJavaScriptを通じてXSLTを使用することはできません。 22. RSSフィードがあることをSafariにはどのように伝えたらよいのでしょうか?Safari 2.0以降では、次のリンク要素を通じて、訪れたページやサイトがコンテンツのRSS配信を提供していることをユーザに示します。 <head> <link rel="alternate" type="application/rss+xml" title="RSS" href="/main/rss/hotnews/hotnews.rss"> <link rel="alternate" type="application/rss+xml" title="RSS" href="/main/rss/hotnews/pr.rss"> </head> Safariのデフォルトの環境設定は、ブックマークに追加されたRSSフィードを30分ごとに確認するように設定されており、条件付きのGETリクエストを使用して、Safari RSSが最後に確認してからフィードが変更されていることを示しているサーバからのみデータを取得できるようになっています。Safariのデフォルトの環境設定では、2週間フィードをキャッシュするように設定されています。 23. .NETベースおよびASPXベースのサイトでSafariは動作しますか?もちろんです。Safariは、マルチベンダブラウザ環境を対象にページの運用を行うすべてのWebサーバアーキテクチャをサポートしています。開発環境では、ブラウザに固有のプロダクトの生成につながるような、非標準の機能の使用は避けてください。 不適切な.NET / ASPXサーバ設定は、非互換性の原因になることがあります。たとえば、machine.configファイルには、ブラウザを検出するための<browserCaps>セクションが含まれていますが、この設定がIE以外のブラウザをサポートするようになっていない場合があります。その結果、デベロッパから不適切なサイズや位置の複数行のTextArea (<asp:TextBox></asp:TextBox>)について報告がありました。ASP.netデベロッパの方は、Mozilla/Firefox、Netscape、Opera、Safari、Konquerorに対応している、こちらの更新された<browserCaps>を確認する必要があります。 24. SafariはFrame、Frameset、iFrameをサポートしていますか?はい。Safariのどのバージョンも<frame>要素、<frameset>要素、<iFrame>要素をサポートしています。 25. インテルベースのMacintoshで実行するSafariではどのような違いがありますか?通常のWebページデベロッパの観点からは、違いはありません。HTML、CSS、Javaスクリプトを使って作成したWebサイトとWebアプリケーションはうまく動作します。 ブラウザプラグインを使用しているページの場合は、そのプラグインがすべてのMacintoshで動作するように作成されていることを確認してください。ブラウザプラグインはプラットフォームに固有であるため、プロセッサに関係なくすべてのMacintoshで動作させるためには、Universal Binaryとして配布する必要があります。
|