1. 程式人生 > >8.3隨筆

8.3隨筆

tab tac 思考 hang 主頁 多少 back regex 自動

每日分享

一、判斷瀏覽器類型

?

/*

* 描述:判斷瀏覽器信息

* 編寫:LittleQiang_w

* 日期:2016.1.5

* 版本:V1.1

*/

//判斷當前瀏覽類型

function BrowserType()

{

var userAgent = navigator.userAgent; //取得瀏覽器的userAgent字符串

var isOpera = userAgent.indexOf("Opera") > -1; //判斷是否Opera瀏覽器

var isIE = userAgent.indexOf("compatible") > -1 && userAgent.indexOf("MSIE") > -1 && !isOpera; //判斷是否IE瀏覽器

var isEdge = userAgent.indexOf("Windows NT 6.1; Trident/7.0;") > -1 && !isIE; //判斷是否IE的Edge瀏覽器

var isFF = userAgent.indexOf("Firefox") > -1; //判斷是否Firefox瀏覽器

var isSafari = userAgent.indexOf("Safari") > -1 && userAgent.indexOf("Chrome") == -1; //判斷是否Safari瀏覽器

var isChrome = userAgent.indexOf("Chrome") > -1 && userAgent.indexOf("Safari") > -1; //判斷Chrome瀏覽器

if (isIE)

{

var reIE = new RegExp("MSIE (\\d+\\.\\d+);");

reIE.test(userAgent);

var fIEVersion = parseFloat(RegExp["$1"]);

if(fIEVersion == 7)

{ return "IE7";}

else if(fIEVersion == 8)

{ return "IE8";}

else if(fIEVersion == 9)

{ return "IE9";}

else if(fIEVersion == 10)

{ return "IE10";}

else if(fIEVersion == 11)

{ return "IE11";}

else

{ return "0"}//IE版本過低

}//isIE end

if (isFF) { return "FF";}

if (isOpera) { return "Opera";}

if (isSafari) { return "Safari";}

if (isChrome) { return "Chrome";}

if (isEdge) { return "Edge";}

}//myBrowser() end

//判斷是否是IE瀏覽器

function isIE()

{

var userAgent = navigator.userAgent; //取得瀏覽器的userAgent字符串

var isIE = userAgent.indexOf("compatible") > -1 && userAgent.indexOf("MSIE") > -1 && !isOpera; //判斷是否IE瀏覽器

if(isIE)

{

return "1";

}

else

{

return "-1";

}

}

//判斷是否是IE瀏覽器,包括Edge瀏覽器

function IEVersion()

{

var userAgent = navigator.userAgent; //取得瀏覽器的userAgent字符串

var isIE = userAgent.indexOf("compatible") > -1 && userAgent.indexOf("MSIE") > -1 && !isOpera; //判斷是否IE瀏覽器

var isEdge = userAgent.indexOf("Windows NT 6.1; Trident/7.0;") > -1 && !isIE; //判斷是否IE的Edge瀏覽器

if(isIE)

{

var reIE = new RegExp("MSIE (\\d+\\.\\d+);");

reIE.test(userAgent);

var fIEVersion = parseFloat(RegExp["$1"]);

if(fIEVersion == 7)

{ return "IE7";}

else if(fIEVersion == 8)

{ return "IE8";}

else if(fIEVersion == 9)

{ return "IE9";}

else if(fIEVersion == 10)

{ return "IE10";}

else if(fIEVersion == 11)

{ return "IE11";}

else

{ return "0"}//IE版本過低

}

else if(isEdge)

{

return "Edge";

}

else

{

return "-1";//非IE

}

}

?

audio和vidio的進度條

HTML 5 <audio> 標簽

屬性

屬性 值 描述

autoplay autoplay 如果出現該屬性,則音頻在就緒後馬上播放。

controls controls 如果出現該屬性,則向用戶顯示控件,比如播放按鈕。

loop loop 如果出現該屬性,則每當音頻結束時重新開始播放。

preload preload

如果出現該屬性,則音頻在頁面加載時進行加載,並預備播放。

如果使用 "autoplay",則忽略該屬性。

src url 要播放的音頻的 URL。

實例

帶有瀏覽器默認控件的 audio 元素:

<audio controls="controls">

<source src="song.ogg" type="audio/ogg" />

<source src="song.mp3" type="audio/mpeg" />

Your browser does not support the audio element.

</audio>

HTML 5 <video> 標簽

定義和用法

<video> 標簽定義視頻,比如電影片段或其他視頻流。

屬性

屬性 值 描述

autoplay autoplay 如果出現該屬性,則視頻在就緒後馬上播放。

controls controls 如果出現該屬性,則向用戶顯示控件,比如播放按鈕。

height pixels 設置視頻播放器的高度。

loop loop 如果出現該屬性,則當媒介文件完成播放後再次開始播放。

preload preload

如果出現該屬性,則視頻在頁面加載時進行加載,並預備播放。

如果使用 "autoplay",則忽略該屬性。

src url 要播放的視頻的 URL。

width pixels 設置視頻播放器的寬度。

實例

一段簡單的 HTML5 視頻:

<video src="movie.ogg" controls="controls">

您的瀏覽器不支持 video 標簽。

</video>

HTML Audio/Video DOM timeupdate 事件

定義和用法

timeupdate 事件在音頻/視頻(audio/video)的播放位置發生改變時觸發。

該事件可以在以下情況被調用:

播放音頻/視頻(audio/video)

移動音頻/視頻(audio/video)播放位置(即播放時刻點被改變,例如拖動了播放進度條)

提示: timeupdate 事件通常與 Audio/Video 對象的 currentTime 屬性一起使用,該屬性返回音頻/視頻(audio/video)的播放位置(以秒計)。

語法

HTML 中:

<audio|video ontimeupdate="myScript">嘗試一下

JavaScript 中:

audio|video.ontimeupdate=function(){myScript};嘗試一下

javascript 中, 使用 addEventListener() 方法:

audio|video.addEventListener("timeupdate", myScript);嘗試一下

註意: Internet Explorer 8 及更早 IE 版本不支持 addEventListener() 方法。

當視頻播放位置已經改變,顯示視頻當前播放位置(一秒計):

?

<body>

<p>該實例中,我們使用了 HTML DOM 為 video 元素添加 "ontimeupdate" 事件。

在用戶開始播放視頻,或者移動視頻的播放位置時觸發函數,並顯示視頻的播放位置。</p>

<video id="myVideo" width="320" height="176" controls>

<source src="mov_bbb.mp4" type="video/mp4">

<source src="mov_bbb.ogg" type="video/ogg">

您的瀏覽器不支持 HTML5 video 標簽。

</video>

<p>播放位置: <span id="demo"></span></p>

<script>

// 獲取 id="myVideo" 的 video 元素

var vid = document.getElementById("myVideo");

// 為 video 元素添加 ontimeupdate 事件,如果當前播放位置改變則執行函數

vid.ontimeupdate = function() {myFunction()};

function myFunction() {

// 顯示 id="demo" 的 p 元素中視頻的播放位置

document.getElementById("demo").innerHTML = vid.currentTime;

}

</script>

</body>

?

?

HTML 5 Audio/Video DOM play() 方法

定義和用法

play() 方法開始播放當前的音頻或視頻。

HTML 5 Audio/Video DOM pause() 方法

定義和用法

pause() 方法停止(暫停)當前播放的音頻或視頻。

帶有播放和暫停按鈕的一段視頻:

?

<body>

<button onclick="playVid()" type="button">播放視頻</button>

<button onclick="pauseVid()" type="button">暫停視頻</button>

<br />

<br />

<video id="video1">

<source src="/example/html5/mov_bbb.mp4" type="video/mp4">

<source src="/example/html5/mov_bbb.ogg" type="video/ogg">

Your browser does not support HTML5 video.

</video>

<script>

var myVideo=document.getElementById("video1");

function playVid()

{

myVideo.play();

}

function pauseVid()

{

myVideo.pause();

}

</script>

</body>

?

?

三、在1024*768或者800*600的分辨率下可以自動調整成適用於該客戶端分辨率的大小。

  第一種方法:做一個網頁解決問題(長了點)

  如果只是因為瀏覽者改變了瀏覽器的設置,或者因為瀏覽器不兼容,使自己精心制作的網頁變得"面目全非",那多令人沮喪!下面我們以網頁愛好者的常用工具Dreamweaver(以下簡稱DW)為例,列出幾個網頁制作初學者較常見的網頁布局問題以及解決方法,希望對初學者們有所幫助。

  一、消除任意縮放瀏覽器窗口對網頁的影響

  一番辛苦做出來的網頁,在全屏狀態下瀏覽一切正常。但在改變瀏覽窗口大小之後,網頁就變得"不堪入目"了,這是個很值得註意的問題。

  問題的根源還得從網頁的布局說起,在DW中,網頁內容的定位一般是通過表格來實現的,解決表格的問題也就成功了大半。

  大家應該註意到,在DW中表格屬性面板的高寬設定選擇上提供了兩種不同類型:百分比和像素值。百分比的使用將會產生前面說到的那個毛病。這裏所說的百分比是指表格的高或寬設置為上層標記所占區域高或寬的百分比,如在一個表格單元的寬度是600,在它裏面嵌入了另外一個表格,表格寬度占表格單元的50%,則這個表格的寬度為300,依此類推,如果在一個表格不是嵌於另一個表格單元中,則其百分比是相對於當時窗口的寬度的。IE瀏覽器中,隨便改動主頁窗口的大小時,表格的內容也隨之錯位、變形,就是因為表格的百分比也要隨著窗口的大小而改變成相應的百分比寬度。

  自然,解決這個問題的辦法就是將表格寬度設置成固定寬度(也就是像素值)。另外如果外層表格已做好固定寬度設置,內層表格也可以適當使用百分比設置。清楚這個原則以後,如果出現類似的問題大家也知道怎麽解決。

  二、讓網頁居中

  說到了窗口大小就會順著路子想到分辨率的問題,在800×600分辨率下制作的網頁在1024×768分辨率的機器上打開,整個網頁就會跑到左邊;1024×768分辨率的網頁在800×600分辨率的機器上有時也會變得"不堪入目"。兩種分辨率各做一個吧?做起來費時,看起來也費勁。怎麽辦呢?

  現在大多數網民都還在用800*600的分辨率,所以我們一般可以以此分辨率為主,要想讓網頁在1024*768時居中,只要在網頁原代碼的<body>後緊加一句<center>,</body>前加一句</center>就OK了。不過有幾個問題這是要註意一下,第一個就是上面說到的百分比的問題,表格、單元格的寬度單位最好要使用像素單位,而不要用百分比。例如width=770。如果你的表格寬度設的是百分比,那麽使用大於800×600的像素時,網頁就會拉寬,這樣網頁可能會變形。在<body>中加入leftmargin=0,即<body leftmargin=0>這種情況下,800×600支持的表格寬度為780像素時不會出現滾動條。還有一點要註意的是不能用DW中的層來定位。

  <html>

  <head></head>

  <body topmargin=0 leftmargin=0>

  <center>

    <table cellspacing cellpadding width=760><tr><td></td></tr></table>

  </center>

  </body>

  </html>

 三、定義固定大小的文字

  大家都知道,在IE瀏覽器的功能設置中,有一個可以自由設置窗口內容字體大小的功能,這樣由於不同訪問者的設置習慣不同,呈現在他們面前的網頁有時也會不不相同。比如你可能本來設計時用的是2號字體,結果由於用戶對瀏覽器的額外設定,變的更大了,這時你的網頁也可能變得"不堪入目"。雖然不是你的錯,但客戶是上帝。

  如果使用了網頁中的CSS樣式表技術,就不會出現上述情況了。使用快捷鍵"Shift+F11"打開樣式表"CSS style"編輯器,在窗口中單擊鼠標右鍵執行"New CSS style..."命令新建一個樣式表,然後在給出的列表中選擇"類型"選項,定義文字屬性參數(一般文字的大小選擇12px較為適宜)。完成後選擇網頁編輯窗中的文本,單擊新的樣式表名稱,可以看到選中的文本發生了變化。預覽時試試定義的文本字體尺寸還會不會隨瀏覽器的選擇字體大小而改變。

  四、讓網頁適應不同的瀏覽器

  瀏覽器的格局現在是兩分天下,一分是IE,另一分是NetScape,在國內Ie有絕對的占有率,在這種情況下我們設計的網頁只要兼容它就行了,但NetScape在國外還是有很多人使用,畢竟它是瀏覽器的元老。

  雖然沒有辦法做出讓所有瀏覽器都兼容的網站,但只要註意以下幾點,做出來的網頁在各個瀏覽器都中能達到比較好的顯示效果:

  不要混合使用層和表格排版,如果是父子關系,如層中表格,不在此原則範圍內。

  內聯式的 CSS 在 Netscape Navigator 中經常會出現問題,使用鏈式或內嵌式。

  有時需要在空層插入表格或者透明圖片,以保證在 Netscape Navigator 裏的效果。

  對於只有幾個像素寬度或高度的層,改用圖片來實現。

  避免使用 W3C 組織不推薦的排版屬性,用 CSS 代替。

  第二種方法:做兩個適合不同分辨率的頁面,一個是800×600,一個是1024×768,在800×600的頁面中加入一下代碼就可以實現跳轉了:

 

  解決分辨率問題在Dreamweaver中沒有此項功能,我們只能手動加入一段JavaScript代碼。首先在change-ie.html或change-nc.html頁面代碼中的< head>和< /head>中加入以下代碼:

   < script language=javascript>

   < !--

   function redirectPage(){

   var url800x600=〃index-ie.html〃; //定義兩個頁面,此處假設index-ex.html和1024-ie.html同change-ie.html在同一個目錄下

   var url1024x768=〃1024-ie.html〃;

   if ((screen.width==800) && (screen.height==600)) //在此處添加screen.width、screen.height的值可以檢測更多的分辨率

   window.location.href= url800x600;

   else if ((screen.width==1024) && (screen.height==768))

   window.location.href=url1024x768;

   else window.location.href=url800x600;

   }

   // -->

   < /script>

   然後再在< body…>內加入onLoad=〃redirectPage()〃

   最後,同樣地,在< body>和< /body>之間加入以下代碼來顯示網頁的工作信息:

   < script language=JavaScript>

   < !--

   var w=screen.width

   var h=screen.height

   document.write(〃系統已檢測到您的分辨率為:〃);

   document.write(〃< font size=3 color=red>〃);

   document.write(w+〃×〃+h);

   document.write(〃< /font>〃);

   document.write(〃正在進入頁面轉換,請稍候…〃);

   // -->

   < /script>

判斷讀者瀏覽器類型和屏幕分辨率,自動調用不同CSS

我們在設計網頁的時候一個比較頭痛的問題是究竟我們的瀏覽者的分辨率是多少?如果使我們的瀏覽者能夠更好的去瀏覽到我的網頁,這個是我們設計前必須思考的問題。所以Leying在設計網頁的時候第一個想的是兼容現在大多數瀏覽者的屏幕分辨率,這裏頭有幾種最常用的方法:

1、硬行把網頁先用表格框起來,框的分辨率應該是在760-780象素,其余的空間可以給一個背景圖或者空白.

2、用自動縮放的方法也可以實現,這種方法比較古老,而且很簡單,這個不多說了;

3、用自動判斷的方法。

今天,就第三種方法來說說,如何來判斷出瀏覽者的屏幕分辨率,根據不同的分辨率給予讀者不同的瀏覽內容:

網絡上也有一些能自動判斷出你的瀏覽器是什麽類型或者什麽版本的代碼,集成過來。

一、既判斷分辨率,也判斷瀏覽器,使之成為判斷瀏覽器類型屏幕分辨率自動調用不同CSS的代碼。

<SCRIPT LANGUAGE="JavaScript">

<!--

if (window.navigator.userAgent.indexOf("MSIE")>=1)

{

var IE1024="";

var IE800="";

var IE1152="";

var IEother="";

ScreenWidth(IE1024,IE800,IE1152,IEother)

}else{

if (window.navigator.userAgent.indexOf("Firefox")>=1)

{

//如果瀏覽器為Firefox

var Firefox1024="";

var Firefox800="";

var Firefox1152="";

var Firefoxother="";

ScreenWidth(Firefox1024,Firefox800,Firefox1152,Firefoxother)

}else{

//如果瀏覽器為其他

var Other1024="";

var Other800="";

var Other1152="";

var Otherother="";

ScreenWidth(Other1024,Other800,Other1152,Otherother)

}

}

function ScreenWidth(CSS1,CSS2,CSS3,CSS4){

if ((screen.width == 1024) && (screen.height == 768)){

setActiveStyleSheet(CSS1);

}else{

if ((screen.width == 800) && (screen.height == 600)){

setActiveStyleSheet(CSS2);

}else{

if ((screen.width == 1152) && (screen.height == 864)){

setActiveStyleSheet(CSS3);

}else{

setActiveStyleSheet(CSS4);

}}}

}

function setActiveStyleSheet(title){

document.getElementsByTagName("link")[0].href="style/"+title;

}

//-->

</SCRIPT>

為了大家明白,這裏簡單解析一下:

? 引用內容

var IE1024="";

var IE800="";

var IE1152="";

var IEother="";

引號裏面分別填寫,用戶使用IE的時候並且分辨率為1024*768,800*600,1152*864要使用的css文件名。

var Firefox1024="";

var Firefox800="";

var Firefox1152="";

var Firefoxother="";

引號裏面分別填寫,用戶使用FireFox(一個也很流行的瀏覽器)的時候並且分辨率為1024*768,800*600,1152*864要使用的css文件名。

var Other1024="";

var Other800="";

var Other1152="";

var Otherother="";

引號裏面分別填寫,用戶使用其他瀏覽器的時候並且分辨率為1024*768,800*600,1152*864要使用的css文件名。

二、不判斷分辨率,只判斷瀏覽器實現根據瀏覽器類型自動調用不同CSS。

<SCRIPT LANGUAGE="JavaScript">

<!--

if (window.navigator.userAgent.indexOf("MSIE")>=1)

{

//如果瀏覽器為IE

setActiveStyleSheet("default.css");

}else{

if (window.navigator.userAgent.indexOf("Firefox")>=1)

{

//如果瀏覽器為Firefox

setActiveStyleSheet("default2.css");

}else{

//如果瀏覽器為其他

setActiveStyleSheet("newsky.css");

}

}

function setActiveStyleSheet(title){

document.getElementsByTagName("link")[0].href="style/"+title;

}

//-->

</SCRIPT>

解釋:(和前面的差不多)

如果瀏覽器為IE,則調用default.css

如果瀏覽器為Firefox,則調用default2.css

如果瀏覽器為其他,則調用newsky.css

使用方法:

很簡單,放在 “</head>” 前面即可。

頁面在不同屏幕分辨率下存在的問題及解決辦法

(未考慮800*600或更低分辨率的情況)

一 問題

在不同分辨率下,頁面布局存在不同程度的差異,特別是頁面上的表單控件,其寬度默認是固定值“width:150px”,當分辨率較高時,表格中的空白顯得過多,頁面布局顯得很不協調,在寬屏顯示器上尤為明顯。

二 解決辦法

方法1. 為不同分辨率單獨做樣式文件,在頁面頭部用js判斷分辨率後動態加載定義好的樣式文件。樣式文件命名格式如:forms[_屏幕寬度].css,樣式文件中只需重新定義文本框和下拉框的寬度即可。

在包含的頭文件headr.inc中加入js代碼:

if(screen.width > 1024){

document.write(‘<link rel="stylesheet" type="text/css" href="${path}/nrmus/etc/css/forms_‘+ screen.width +‘.css">‘);

}

forms_1280.css文件內容:

/* 分辨率寬度為1280的時候,文本框和下拉框的寬度屬性(width)單獨定義

* 參考計算方法為:(分辨率寬度-174)/4 * 0.7

* 左側菜單欄寬度為174px;右側頁面表格是4列;控件寬度為單元格的70%

* (1280-174)/4*0.7 = 193

*/

input.text

{

background:#FFFFFF;

border:1px solid #B5B8C8;

padding:3px 3px;

height:22px;

line-height:18px;

vertical-align:middle;

padding-bottom:0pt;

padding-top:2px;

width: 193px;

color: #333;

}

select.select{

width: 193px;

}

優點:實現很簡單,代碼量少;並且可針對不同分辨率做更細粒度的頁面控制。

缺點:無明顯缺點。

方法2 將整個頁面的寬度設置為固定值,並使其居中顯示。

優點:可以很大程度的消除不同分辨率下的顯示差異。

缺點:分辨率寬度大於這個固定值的時候,頁面兩邊會出現空白。

方法3 用js判斷分辨率,修改body的zoom屬性(IE特性),即可實現對整個頁面進行縮放,類似IE8或其它瀏覽器提供的縮放功能。

優點:實現簡單,頁面能進行縮放。

缺點:縮放是寬度和高度的等比縮放,高分辨率下字體、圖片看起來會變小,問題解決的不徹底。

8.3隨筆