IE相容事件綁定V1.0

来源:https://www.cnblogs.com/Selling-fish-bears/archive/2019/04/09/10674742.html
-Advertisement-
Play Games

想要相容IE678,少用原型,因為它們沒有完全實現ECMA-262規範 測試代碼 ...


想要相容IE678,少用原型,因為它們沒有完全實現ECMA-262規範

 

 1 (function(window){
 2     //相容IE678時少用原型,因為它沒有完全遵循ECMA-262規範
 3     
 4     //襯墊代碼:isArray方法的相容方案
 5     if (!Array.isArray) {
 6       Array.isArray = function(arg) {
 7         return Object.prototype.toString.call(arg) === '[object Array]';
 8       };
 9     }
10     
11     //襯墊代碼:every數組過濾方法的相容方案
12     if (!Array.prototype.every){
13       Array.prototype.every = function(fun /*, thisArg */)
14       {
15         'use strict';
16     
17         if (this === void 0 || this === null)
18           throw new TypeError();
19     
20         var t = Object(this);
21         var len = t.length >>> 0;
22         if (typeof fun !== 'function')
23             throw new TypeError();
24     
25         var thisArg = arguments.length >= 2 ? arguments[1] : void 0;
26         for (var i = 0; i < len; i++)
27         {
28           if (i in t && !fun.call(thisArg, t[i], i, t))
29             return false;
30         }
31     
32         return true;
33       };
34     }
35     
36     var bear = {
37         //該函數是一個全相容的事件綁定函數,但只能處理一個事件回調函數
38         addListener: function(node,name,fn){    
39             if(node.addEventListener){
40                 node.addEventListener(name,fn);
41             }else{
42                 node.attachEvent("on"+name,function(){
43                     fn.call(node);
44                 })
45             }
46         },
47     
48         //該函數是一個全相容的事件綁定函數,能處理一個回調數組
49         addMoreListener: function(node,name,arr){
50             if(typeof arr === "function"){
51                 bear.addListener(node,name,arr);
52             }else if(Array.isArray(arr)&&arr.length){                        
53                 if(node.addEventListener){
54                     
55                 }else if(node.attachEvent){
56                     arr = arr.reverse();
57                 }                        
58                 var flag = arr.every(function(item){
59                     return typeof item === "function";
60                 })    
61                 if(flag){
62                     for(var i=0;i<arr.length;i++){
63                         bear.addListener(node,name,arr[i]);
64                     }
65                 }else{
66                     throw new Error("數組內元素類型有誤");
67                 }
68             }else{
69                 throw new Error("第三參數類型有誤或為空數組");
70             }                    
71         }    
72     }
73     
74     window.bear = bear;
75 })(window)

 

測試代碼

 1 <!DOCTYPE html>
 2 <html>
 3     <head>
 4         <meta charset="UTF-8">
 5         <title></title>
 6         <style>
 7             *{
 8                 margin: 0;
 9                 padding: 0;
10             }
11             #app{
12                 width: 100px;
13                 height: 100px;
14                 background: #F4A460;
15                 position: absolute;
16                 left: 0;
17                 right: 0;
18                 bottom: 0;
19                 top: 0;
20                 margin: auto;
21                 font: 20px/100px helvetica;
22                 text-align: center;
23                 
24             }
25         </style>
26         
27         
28         <script src="./js/bear-extend-event2.js"></script>
29         <script>
30             window.onload = function(){                
31                                 
32                 var appNode = document.getElementById("app");        
33                 var arr = [function(){console.log(1);},function(){console.log(2);}]
34                 //debugger
35                 bear.addMoreListener(appNode,"click",arr);
36             }
37         </script>
38     </head>
39     <body>
40         <div id="app">app</div>            
41     </body>
42 </html>

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 一、Hadoop的數據壓縮 1.概述 在進行MR程式的過程中,在Mapper和Reducer端會發生大量的數據傳輸和磁碟IO,如果在這個過程中對數據進行壓縮處理,可以有效的減少底層存儲(HDFS)讀寫的位元組數,,並且通過減少Map和Reduce階段數據的輸入輸出來提升MR程式的速度,提高了網路帶寬和 ...
  • AWZ愛偽裝 是一款通用的一鍵新機軟體,主要用於對應用偽裝設備參數和清理應用數據,它功能強大,設置豐富,且擁有完整的隨機參數設置、全息備份、虛擬定位功能;支持蘋果iOS越獄設備,不支持安卓系統;暫時支持ios7、8、9、10、11越獄系統,暫時不支持ios11.4之後的越獄(含ios11.4越獄系統 ...
  • 實際上我們通常是使用WebView控制項對本地html進行讀取,這樣就可以體會類似web app和安卓原生混合開發的樂趣了。在讀取本地html並展示在前臺的時候,並不需要在Androidmenifast.xml文件當中設置相應的網路許可權,也不需要設置https協議,因為安卓手機的本地伺服器應該都是基於 ...
  • 文章大綱 一、greenDao簡介二、greenDao實戰三、項目源碼下載四、參考文章 一、greenDao簡介 1. 什麼是greenDao GreenDAO是一個開源的Android ORM(“對象/關係映射”),通過ORM(稱為“對象/關係映射”),在我們資料庫開發過程中節省了開發時間。 2. ...
  • 方法如下: 因為在用WebView控制項查看安卓內置網頁的時候,必須創建這個資源文件夾,將網頁放置在這個目錄之下,預設是沒有assets這個目錄的,這樣才可以實現網頁代碼html.css.javascript與Android native的交互,所以我們來看一看怎麼做。很簡單,但不知道就做不來。讀取本 ...
  • 導入 #import <objc/runtime.h> unsigned int count; Method *methods = class_copyMethodList([UIAlertAction class], &count); for (int i = 0; i < count; i++) ...
  • Android許可權 Android安全架構規定:預設情況下,任何應用都沒有許可權執行對其他應用、操作系統或用戶有不利影響的任何操作。這包括讀寫用戶的私有數據(聯繫人,簡訊,相冊,位置)、讀寫其他應用的文件、執行網路訪問、使設備保持喚醒狀態等等。 如果是一些正常的許可權(非高危許可權),比如網路訪問等在應用 ...
  • - (UIImage *)dtk_setImageColor:(UIColor *)imageColor{ //獲取畫布 UIGraphicsBeginImageContextWithOptions(self.size, NO, 0.0f); //畫筆沾取顏色 [imageColor setFill... ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...