Re: [討論] iPad & iPhone 網頁設計

看板Web_Design作者 (EvenWu)時間14年前 (2010/04/05 14:03), 編輯推噓1(102)
留言3則, 2人參與, 最新討論串3/4 (看更多)
※ 引述《chph (chph)》之銘言: : 原本用 JavaScript 寫,evenwu 說不支援 XDDD XDDD 其實是支援的 只是iPad與iPhone的safari有特殊問題 第一次讀取頁面時,再用js去改meta是會正常生效 但是若是link到頁面,js改meta會造成判斷錯誤 顯示時會非常奇怪... 實驗後發現iPad放置為直立的時候,是正常 橫置的時候才會出現頁面寬判斷錯誤的問題 但是我變因控制的沒有很嚴謹 還需要再實驗才能得出真正的結果 (修改補充) meta應該是在讀取整份html的時候safari先吃進去了 js修改後某些屬性無法被safari知道 但後來發現旋轉iPad的時候會重新init一次 所以旋轉後可能是有重讀meta屬性,才有變化 看來從伺服器下手會比較優 若用一些CMS的話,改程式會比較麻煩 尤其是在template裡面放php會造成一些安全問題 : 那就從伺服端語言下手吧,這裡用 PHP 為範例。 : 首先觀察兩種可能輸出的viewport情形: : 1. iPhone 可允許縮放 : <meta name="viewport" content="initial-scale = 1.0" /> : 2. iPad 固定不允許縮放 : <meta name="viewport" content="initial-scale = 1.0, user-scalable = no" /> : iPad 的 viewport content 開頭與 iPhone 相同,僅多了 ", user-scalable = no", : 因此程式邏輯簡單地如下: : 1. 由於 viewport 不影響桌機瀏覽器,輸出也不影響,因此預設就會輸出 viewport : 2. 預設 viewport content 是可允許縮放的,即只有 "initial-scale = 1.0" : 3. 偵測使用者代理程式 (User Agent),若為 iPad ,改變 viewport content 為可縮放 : ,即加入 ", user-scalable = no" : PHP & HTML: : <?php : // 預設值 : $viewport_content = "initial-scale = 1.0"; : // 判斷User Agent 有無 iPad 字串 : if ( preg_match('/iPad/', $_SERVER['HTTP_USER_AGENT']) ) { : $viewport_content .= ", user-scalable = no"; : } : ?><!DOCTYPE html PUBLIC "-//WAPFORUM//DTD XHTML Mobile 1.0//EN" : "" rel="nofollow">http://www.wapforum.org/DTD/xhtml-mobile10.dtd"> : <html lang="zh-TW" xmlns="" rel="nofollow">http://www.w3.org/1999/xhtml"> : <head> : <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> : <title>iPad Detection</title> : <meta name="viewport" content="<?php echo $viewport_content; ?>" /> : </head> : <body> : </body> : </html> -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 210.64.16.123 ※ 編輯: evenwu 來自: 210.64.16.123 (04/05 15:10)

04/05 15:36, , 1F
請問用js改META的目的是? ?_?
04/05 15:36, 1F

04/05 17:32, , 2F
文件寫meta可以定義裝置上safari的特性
04/05 17:32, 2F

04/05 17:33, , 3F
問題是裝置並沒有分 iPad or iPhone
04/05 17:33, 3F
文章代碼(AID): #1BkNqZB6 (Web_Design)
文章代碼(AID): #1BkNqZB6 (Web_Design)