Html——ie打開項目,外引js,引入成功卻報錯:無法獲取未定義或 null 引用的屬性“getItem”


參考:https://www.cnblogs.com/qq254980080/p/11785677.html

      https://blog.csdn.net/u014091101/article/details/88057449

      https://blog.csdn.net/qq_39207948/article/details/80615108

   https://blog.csdn.net/liunianqingshi/article/details/41941797?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase

 

 

我的情況:頁面中外引index.js,本地用ie8瀏覽器打開,控制台報錯:

 

 

 index.js:

···
var token = sessionStorage.getItem('token');
···
var indexLoad = {
    index: function () {
        ···
    }
}
···

 

html:

<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=8">
    <script src="js/index.js"></script>
</head>
<body>
    ···
</body>
<script>
    $(document).ready(function () {
        indexLoad.index();
    });
</script>
</html>

 

剛開始以為是index.js沒有引入成功,就在index.js的第一行打印,控制台是有輸出的。排除引入失敗的原因,挨個打印,發現獲取token報錯后,js就沒有繼續往下執行了,所以才會報第二個錯。

 

總結:

  報錯1原因 —— IE8-IE10中是需要服務器或者localhost,才能使用localStorage和sessionStorage

  報錯2原因 —— js是‘單線程’語言,執行模式有兩種:同步,異步

        單線程:只有一條流水線

        同步:依次在流水線上執行

        異步:流水線旁加了一個臨時儲物台(任務隊列),會把某些模塊拿到臨時儲物台,或者會把臨時儲物台的某些模塊插隊到流水線

         js默認模式是同步模式,按流水線執行:A,B,C,不管A里邊代碼運行時間多長,都要先執行完A,再執行B,再執行C


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM