Google Code Prettify

顯示具有 HTML5 標籤的文章。 顯示所有文章
顯示具有 HTML5 標籤的文章。 顯示所有文章

Html5 是的 frame 替代方案是什麼?

HTML5 已經不再推薦使用 <frame> 和 <frameset> 元素來創建多個可滾動的頁面區域。這些元素在 HTML4 中很常見,但已被認為是過時的,並且在現代網頁設計中不再使用。取而代之的是使用 <iframe> 元素和 CSS 來實現類似的效果。


使用 <iframe>
<iframe> 元素允許您在當前頁面中嵌入另一個 HTML 頁面。它比 <frame> 和 <frameset> 更靈活且更易於使用。

示例
html

<pre style="border: 1px solid rgb(170, 170, 170); padding: 10px;overflow: scroll;"><code>
<!DOCTYPE html>
<html lang="zh-TW">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>使用 iframe 替代 frame</title>
    <style>
        body {
            display: flex;
            flex-direction: column;
            height: 100vh;
            margin: 0;
        }
        header, footer {
            background-color: #f1f1f1;
            padding: 20px;
            text-align: center;
        }
        iframe {
            flex: 1;
            border: none;
        }
    </style>
</head>
<body>
    <header>這是頁首</header>
    <iframe src="content.html" title="嵌入內容"></iframe>
    <footer>這是頁尾</footer>
</body>
</html>
</code></pre>
<br><br><br>



在這個示例中,我們使用 <iframe> 元素來嵌入另一個 HTML 頁面(content.html),並使用 CSS 來設置頁面布局,使 <iframe> 佔據剩餘的空間。

使用 CSS 和 JavaScript
除了使用 <iframe>,您還可以通過 CSS 和 JavaScript 來創建類似於 <frame> 的布局。例如,使用 CSS 的 grid 或 flexbox 佈局可以輕鬆地創建複雜的頁面布局。

示例:使用 CSS Grid 佈局
html

<!DOCTYPE html>
<html lang="zh-TW">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>使用 CSS Grid 替代 frame</title>
    <style>
        body {
            display: grid;
            grid-template-rows: auto 1fr auto;
            grid-template-areas:
                "header"
                "content"
                "footer";
            height: 100vh;
            margin: 0;
        }
        header {
            grid-area: header;
            background-color: #f1f1f1;
            padding: 20px;
            text-align: center;
        }
        main {
            grid-area: content;
            overflow: auto;
        }
        footer {
            grid-area: footer;
            background-color: #f1f1f1;
            padding: 20px;
            text-align: center;
        }
    </style>
</head>
<body>
    <header>這是頁首</header>
    <main>
        <!-- 這裡的內容可以動態載入 -->
        <p>這是主要內容區域。</p>
    </main>
    <footer>這是頁尾</footer>
</body>
</html>

在這個示例中,我們使用 CSS Grid 來定義頁面的佈局。<header> 和 <footer> 固定在頁面的頂部和底部,而 <main> 佔據中間的可滾動區域。這樣的佈局可以通過 JavaScript 動態加載和更新內容,實現與 <frame> 相似的效果。


總結
<iframe>:用於在當前頁面中嵌入另一個 HTML 頁面,替代 <frame> 和 <frameset>。
CSS Grid 或 Flexbox:用於創建現代、響應式的頁面佈局,搭配 JavaScript 可以實現動態內容加載。
這些方法都比過時的 <frame> 和 <frameset> 更加靈活和強大,能夠更好地適應現代網頁設計需求。

[HTML5]sessionStorage 和 localStorage

sessionStorage 用於本地存儲一個會話(session)中的數據,這些數據只有在同一個會話中的頁面才能訪問並且當會話結束後數據也隨之銷毀。因此 sessionStorage 不是一種持久化的本地存儲,僅僅是會話級別的存儲。

而 localStorage 用於持久化的本地存儲,除非主動刪除數據,否則數據是永遠不會過期的。




web storage 和 cookie 的區別

Web Storage 的概念和 cookie 相似,區別是它是為了更大容量存儲設計的。 Cookie 的大小是受限的,並且每次你請求一個新的頁面的時候 Cookie 都會被發送過去,這樣無形中浪費了帶寬,另外 cookie 還需要指定作用域,不可以跨域調用

除此之外,Web Storage 擁有 setItem , getItem , removeItem , clear 等方法,不像 cookie 需要前端開發者自己封裝 setCookie,getCookie。

但是 Cookie 也是不可以或缺的:Cookie 的作用是與服務器進行交互,作為 HTTP 規範的一部分而存在 ,而 Web Storage 僅僅是為了在本地 “存儲” 數據而生。




html5 web storage 的瀏覽器支持情況

瀏覽器的支持除了IE7及以下不支持外,其他標準瀏覽器都完全支持 (ie 及 FF 需在 web 服務器裡運行),值得一提的是 IE 總是辦好事,例如 IE7、IE6 中的 UserData 其實就是 javascript 本地存儲的解決方案。通過簡單的代碼封裝可以統一到所有的瀏覽器都支持 web storage。

要判斷瀏覽器是否支持localStorage可以使用下面的代碼:

if(window.localStorage){
    alert("浏览支持localStorage")
}else{
   alert("浏览暂不支持localStorage")
}
//或者
if(typeof window.localStorage == 'undefined'){
    alert("浏览暂不支持localStorage")
}


localStorage 和 sessionStorage 操作

localStorage 和 sessionStorage 都具有相同的操作方法,例如 setItem 、 getItem 和 removeItem 等。




localStorage 和 sessionStorage 的方法


setItem 存儲 value
用途:將value存儲到key字段
用法:.setItem( key, value)

代碼示例:
    sessionStorage.setItem("key", "value");
    localStorage.setItem("site", "js8.in");


getItem 獲取 value
用途:獲取指定key本地存儲的值
用法:.getItem(key)

代碼示例:
    var value = sessionStorage.getItem("key");
    var site = localStorage.getItem("site");


removeItem刪除key
用途:刪除指定key本地存儲的值
用法:.removeItem(key)

代碼示例:
    sessionStorage.removeItem("key");
    localStorage.removeItem("site");


clear清除所有的key/value
用途:清除所有的key/value
用法:.clear()

代碼示例:
    sessionStorage.clear();
    localStorage.clear();



其他操作方法:點操作和[]
web Storage 不但可以用自身的 setItem, getItem 等方便存取,也可以像普通對像一樣用點(.)操作符,及 [] 的方式進行數據存儲,像如下的代碼:

    var storage = window.localStorage;
    storage.key1 = "hello";
    storage["key2"] = "world";
    console.log(storage.key1);
    console.log(storage["key2"]);



localStorage 和 sessionStorage 的 key 和 length屬性實現遍歷
sessionStorage 和 localStorage 提供的 key() 和 length 可以方便的實現存儲的數據遍歷,例如下面的代碼:

    var storage = window.localStorage;
    for (var i=0, len = storage.length; i < len; i++){
        var key = storage.key(i);
        var value = storage.getItem(key);
        console.log(key + "=" + value);
    }



storage 事件
storage還 提供了 storage 事件,當鍵值改變或者 clear 的時候,就可以觸發 storage 事件,如下面的代碼就添加了一個 storage 事件改變的監聽:

    if(window.addEventListener){
        window.addEventListener("storage",handle_storage,false);
    }else if(window.attachEvent){
        window.attachEvent("onstorage",handle_storage);
    }
    function handle_storage(e){
        if(!e){e=window.event;}
    }






資料來源: https://js8.in/2011/10/18/html5%E7%9A%84sessionstorage%E5%92%8Clocalstorage/