´º½ÚÇ°ÀëÖ°ÁË£¬ÄêºóÀ´ÁËÓÐÒ»ÖÜÁË£¬°Ñ¼òÀú¶ªµ½ÍøÉϺó´ó¸ÅÊÕµ½Á˽«½üÆßÊ®¶à¸öÃæÊÔÑûÇ룬ÌôÁ˼¸¸öÉÔ΢֪ÃûһЩµÄ¹«Ë¾Èç¹úÃÀ¾©¶«ÃÀÍŰٶȲÊƱµÈºÍһЩÖÐСÐ͹«Ë¾È¥ÃæÊÔ£¬ÕâÐÇÆÚÒ»¹²ÃæÁË11¼Ò¹«Ë¾£¬³ýÁË°¢ÀïËƺõûϷÁËÆäËûµÄÊ®¼Ò»ù±¾¶¼·¢ÁË¿ÚÍ·»òÊÇÕýʽoffer£¬Ò²²»´òËãÔÙÃæÁË£¬Éç±£¶ÏÁËÒ²ÊǸöÂ鷳ʣ¬´òËã´ÓÕâÆäÖÐÌôÒ»¸ö¾Í¿ÉÒÔÁË¡£
ÃæÊÔ¹ý³ÌÖÐÓÐ×öÃæÊÔÌâµÄ£¬Ò²ÓÐÖ±½ÓÁĵģ¬Êµ»°½²ÓÐЩÃæÊÔÌâÆäʵ¾ÍÊDZ³Ê飬Ëæ±ãÒ»°Ù¶È¾ÍÄܳö´ð°¸µÄ¶«Î÷Æäʵ²»Ì«ÊʺÏÓÃÓÚÃæÊÔÌâÖС£ÀýÈçijijcssÊôÐÔµÄÓ÷¨£¬jsijº¯ÊýµÄ×÷Óõȵȡ£¸öÈËÇãÏòÓÚ½«Êµ¼Ê¹¤×÷ÖпÉÄÜ»áÓöµ½µÄÎÊÌâµÄ³¡¾°£¬ÒÔ¼°¸÷ÖÖ¼¼ÊõµÄ¿Ó×÷ΪÃæÊÔÌ⣬ÕâÑùÒ»Ôò¿ÉÒÔ¿´³öËûµÄ¾Ñé¶àÉÙ£¬¶þÔòÒ²¿ÉÒÔ·ÀÖ¹Ëû×ö±ÊÊÔÌâµÄʱºòÊÖ»úËÑË÷½á¹û¡£
²»¹ý×ÜÌåÀ´½²»ù±¾ÉÏÿ¼ÒÎʵÄÎÊÌâÒ²²î²»¶à£¬¿ÉÄܲ»Í¬ÒµÎñµÄ¹«Ë¾ÎʵÄÎÊÌâµÄ²àÖص㲻̫һÑù£¬Óеã²àÖØÓÚÒƶ¯¶ËÊÊÅäcss²¼¾Öä¯ÀÀÆ÷¼æÈÝIE hack£¬¶øÓеIJàÖØÓÚJSÂß¼ÃæÏò¶ÔÏóÉè¼Æģʽ¿¼²ìµÈ£¬Èç¹ûÄãÓÐÈýµ½ÎåÄê×óÓҵĿª·¢¾ÑéÕâЩÎÊÌâ»ù±¾Ò²¶¼Óö¼û¹ý£¬¾ÍËãÊÇ×ö¸ö×ܽá°É¡£
ÊÖдʼþÄ£Ðͼ°Ê¼þ´úÀí/ίÍÐÕâ¸öËãÊDZ»Îʵ½µÄ×î¶à´ÎÊýµÄÎÊÌâÁË£¬Ê×ÏÈÒªÇóÃèÊöÏÂjsÀïÃæµÄ¡¾Ê¼þµÄÈý¸ö½×¶Î¡¿£¬Èç¹ûûÌý˵¹ýÈý¸ö½×¶Î£¬ÄÇ»ù±¾ÉϾÍûϷÁË¡£·Ö±ðÊDz¶»ñ£¬Ä¿±ê£¬Ã°Åݽ׶Σ¬µÍ°æ±¾IE²»Ö§³Ö²¶»ñ½×¶Î¡£È»ºó¿ÉÄÜÎʵ½IEºÍW3C²»Í¬°ó¶¨Ê¼þ½â°óʼþµÄ·½·¨ÓÐʲôÇø±ð£¬²ÎÊý·Ö±ðÊÇʲô£¬ÒÔ¼°Ê¼þ¶ÔÏóeÓÐʲôÇø±ðµÈµÈ¡£
Èç¹ûÉÏÊö¶¼Ã»ÎÊÌ⣬½ÓÏÂÀ´¿ÉÄÜ»áÎÊ¡¾Ê¼þµÄ´úÀí/ίÍС¿µÄÔÀíÒÔ¼°ÓÅȱµã£¬ÕâÊÇ¿¿Ê¼þµÄðÅÝ»úÖÆÀ´ÊµÏֵģ¬ÓŵãÊÇ
1¡¢¿ÉÒÔ´óÁ¿½ÚÊ¡ÄÚ´æÕ¼Ó㬼õÉÙʼþ×¢²á£¬±ÈÈçÔÚtableÉÏ´úÀíËùÓÐtdµÄclickʼþ¾Í·Ç³£°ô
2¡¢¿ÉÒÔʵÏÖµ±ÐÂÔö×Ó¶ÔÏóʱÎÞÐèÔٴζÔÆä°ó¶¨Ê¼þ£¬¶ÔÓÚ¶¯Ì¬ÄÚÈݲ¿·ÖÓÈΪºÏÊÊ
ʼþ´úÀíµÄÓ¦Óó£ÓÃÓ¦¸Ã½öÏÞÓÚÉÏÊöÐèÇóÏ£¬Èç¹û°ÑËùÓÐʼþ¶¼ÓôúÀí¾Í¿ÉÄÜ»á³öÏÖʼþÎóÅУ¬¼´±¾²»Ó¦Óô¥·¢Ê¼þµÄ±»°óÉÏÁËʼþ£¬ÊÂʵÉÏÎÒ¼û¹ýÓÐÈË°ÑÒ³ÃæÀïµÄËùÓÐʼþ¶¼°ó¶¨µ½documentÓÃίÍеģ¬ÕâÊǼ«Æä²»Ã÷ÖǵÄ×ö·¨¡£
Ëùν¾¢¾ÆËäºÃ£¬¿É²»ÒªÌ°±Å¶~
Ö®ºó¶Ô·½¿ÉÄÜÒªÇóÄãÊÖдÔÉújs¡¾ÊµÏÖʼþ´úÀí¡¿£¬²¢ÒªÇó¼æÈÝä¯ÀÀÆ÷£¬Æäʵ¾ÍÊÇ¿¼ºË¶Ôʼþ¶ÔÏóeµÄÁ˽â³Ì¶È£¬ÒÔ¼°ÔÚIE϶ÔÓ¦µÄÊôÐÔÃû¡£Æäʵ´ËʱÈç¹ûÄã˵¾ÍÊÇÓÃtarget£¬currentTarget£¬ÒÔ¼°IEϵÄsrcElementºÍthis£¬»ù±¾¾Í¿ÉÒÔÂÔ¹ýÁË¡£
Èç¹ûÉÏÊö¶¼okµÄ»°£¬ÄÇô¼«ÓпÉÄÜÒªÇóÈÃÄ㡾ʵÏÖʼþÄ£ÐÍ¡¿£¬¼´Ð´Ò»¸öÀà»òÊÇÒ»¸öÄ£¿é£¬ÓÐÁ½¸öº¯Êý£¬Ò»¸öbindÒ»¸ötrigger£¬·Ö±ðʵÏÖ°ó¶¨Ê¼þºÍ´¥·¢Ê¼þ£¬ºËÐÄÐèÇó¾ÍÊÇ¿ÉÒÔ¶Ôijһ¸öʼþÃû³Æ°ó¶¨¶à¸öʼþÏìÓ¦º¯Êý£¬È»ºó´¥·¢Õâ¸öʼþÃû³Æʱ£¬ÒÀ´Î°´°ó¶¨Ë³Ðò´¥·¢ÏàÓ¦µÄÏìÓ¦º¯Êý¡£
Õâ¸öÐèÇóÈç¹û¶ÔÓÚ×ö¹ýC#µÄÈËÀ´½²¾ÍÔÙÊìϤ²»¹ý£¬Ëû¸ù±¾¾ÍÊÇC#Öеġ¾Î¯ÍС¿£¨delegate£©¡£¶øίÍÐÓëʼþ¼¸ºõÊÇÒ»¼Ò×Ó¡£»Øµ½Ç°Ãæ˵µÄÌâÄ¿£¬´óÖÂʵÏÖ˼·¾ÍÊÇ´´½¨Ò»¸öÀà»òÊÇÄäÃûº¯Êý£¬ÔÚbindºÍtriggerº¯ÊýÍâ²ã×÷ÓÃÓò´´½¨Ò»¸ö×Öµä¶ÔÏó£¬ÓÃÓÚ´æ´¢×¢²áµÄʼþ¼°ÏìÓ¦º¯ÊýÁÐ±í£¬bindʱ£¬Èç¹û×ÖµäûÓÐÔò´´½¨Ò»¸ö£¬keyÊÇʼþÃû³Æ£¬valueÊÇÊý×飬ÀïÃæ·Å×ŵ±Ç°×¢²áµÄÏìÓ¦º¯Êý£¬Èç¹û×Ö¶ÎÖÐÓУ¬ÄÇô¾ÍÖ±½Ópushµ½Êý×é¼´¿É¡£triggerʱµ÷³öÀ´ÒÀ´Î´¥·¢Ê¼þÏìÓ¦º¯Êý¼´¿É¡£
²»¹ý»¹Óкܶàϸ½Ú£¬±ÈÈç´¥·¢ÏìÓ¦º¯ÊýʱµÄÉÏÏÂÎÄÓ¦¸ÃÊÇʲô£¬´¥·¢ÏìÓ¦º¯ÊýµÄ²ÎÊýÁбíÓ¦¸ÃÊÇʲô£¬Èç¹ûÒªÇó°Ñµ÷ÓÃtriggerµÄ²ÎÊýÁÐ±í¶¼´«µ½ÏìÓ¦º¯ÊýÖл¹Òª¿¼Âǵ½°Éarguments¶ÔÏóת»¯Îª´¿Êý×é²ÅÐеȵȡ£
»¹ÓÐһЩÃæÊÔ¹Ù»áÎʵ½Ê¼þÈçºÎÅÉ·¢Ò²¾ÍÊÇʼþ¹ã²¥£¨dispatchEvent£©µÈµÈ£¬ÕâÀï²»ÔÙÕ¹¿ª¡£
ÓйØʼþµÄ¿¼ºËµã´ó¸ÅÒ²¾ÍÕâô¶àÁË
Ç°¶ËÐÔÄÜÓÅ»¯Õâ¸ö¼òÖ±ÀÏÉú³£Ì¸£¬²»¹ÜÊÇÔ°×ÓÀﻹÊÇÔ°×ÓÍ⣬¹ØÓÚÇ°¶ËÓÅ»¯µÄ¶«Î÷Ì«¶àÌ«¶àÁË£¬²»Í¬½Ç¶È²»Í¬·½ÏòÒ²Óкܶ࣬ÍøÂçÐÔÄÜÓÅ»¯£¬¼Ó¿ì·ÃÎÊËٶȣ¬ä¯ÀÀÆ÷²¢ÐмÓÔØÊýÁ¿£¬ÔõÑùʵÏÖÔÉúJSÒì²½ÔØÈ룬CDN¼ÓËÙµÄÔÀí£¬ÈçºÎ½«²»Í¬¾²Ì¬×ÊÔ´·¢²¼µ½¶à¸öÓòÃû·þÎñÆ÷ÉÏ£¬·¢²¼ºóÕâЩ¾²Ì¬×ֶεÄurl·¾¶¸ÄÔõôÅúÁ¿¸Äд£¬ÓÃʲô¹¤¾ß½øÐÐÏîÄ¿´ò°ü£¬css´ò°üºóµÄÏà¶Ô·¾¶Ôõôת»»Îª¾ø¶Ô·¾¶£¬ÓÃʲô¹¤¾ß½øÐÐÏîÄ¿Ä£¿éÒÀÀµ¹ÜÀí£¬Ôõô½øÐÐcookieÓÅ»¯µÈµÈ£¬
Õâ¸ö˵ÆðÀ´¾ÍºÜ¶àÁË£¬¾¡¿ÉÄܵİ´ÕÕ×Ô¼º×ö¹ýµÄÓÅ»¯À´½²£¬·ñÔòÃæÊÔ¹ÙËæ±ãÌôÒ»ÏîÉ¶¼¿ÉÄܻῨ¿Ç£¬ÓëÆäÕâÑù»¹²»Èç²»½²
±Õ°üÔÀí¼°Ó¦ÓÃÕâ¸öÎÊÌâµÄ¾µäÐÔ£¬¼¸ºõËùÓÐÃæÊÔ¹Ù¶¼»áÎʵ½Õâ¸öÎÊÌ⣬ʲôÇé¿öÏ»ᷢÉú±Õ°ü£¬ÎªÊ²Ã´ÐèÒª±Õ°ü£¬Ê²Ã´³¡¾°ÏÂÐèÒª£¬±Õ°ü±ÕÁËË£¬ÔõôÊͷű»±Õ°üµÄ±äÁ¿Äڴ棬±Õ°üµÄÓŵãÊÇʲô£¬È±µãÊÇʲôµÈµÈ¡£
¹ØÓÚ±Õ°ü£¬ÓеÄÊÇÉÏÊöÌáÎÊ£¬ÓеÄÊÇÖ±½Ó×ö±Õ°üÃæÊÔÌâ¡£¹ØÓÚ¸ÅÄîÍøÉÏÒ»ËÑÒ»´ó°Ñ£¬¹ØÓÚ±Õ°üÃæÊÔÌ⣬¿ÉÒԲο¼ÎÒ֮ǰд¹ýµÄһƪÎÄÕ£º´ó²¿·ÖÈ˶¼»á×ö´íµÄ¾µäJS±Õ°üÃæÊÔÌ⣨£©
²»¿äÕŵĽ²£¬Èç¹ûÕâƪÎÄÕÂÍêȫŪ¶®ÁË£¬»ù±¾ÉÏûÓпÉÒÔÄÑסµÄ±Õ°üµÄÌâÄ¿ÁË¡£
ÊÖдFunction.bindº¯ÊýÊ×ÏÈ»áÒªÇó½âÊÍÏÂÕâ¸öº¯ÊýµÄ×÷Óã¬ÒÔ¼°ÔÚʲô³¡¾°ÏÂÐèÒªÓõ½Ëü£¬×îºóÊÖдһ¸öFunction.bindº¯Êý¡£
Ö»ÒªÕÆÎÕºËÐļ¸µã¾ÍûÎÊÌ⣺
1¡¢Function.bind·µ»ØµÄÒ²ÊÇÒ»¸öº¯Êý£¬ËùÒÔ×¢¶¨·¢ÉúÁ˱հü£¬
2¡¢ÔÚ·µ»ØµÄÕâ¸öº¯ÊýÖÐÈ¥µ÷ÓÃÒ»¸öÆäËûµÄº¯Êý£¬ÕâÆäʵ±¾ÖÊÉϾÍÊǺ¯Êý¹³×Ó(HOOK)
¹ØÓÚÔÚJSÀïµÄº¯Êý¹³×Ó£¬ÎÒÈÏΪֻÐèҪά»¤ÒÔÏÂÈýµã¼´¿É£º
1¡¢±£³Öº¯ÊýµÄthisÖ¸Ïò
2¡¢±£³Öº¯ÊýµÄËùÓвÎÊý¶¼´«µÝµ½Ä¿±êº¯Êý
3¡¢±£³Öº¯ÊýµÄ·µ»ØÖµ
ÓÐÁËÒÔÉÏÕ⼸µã£¬Õâ¸öº¯Êý¾Í·Ç³£ºÃдÁË£¬ÏÂÃæÊÇMSDNÉϵıê×¼Polyfill£º
if (!Function.prototype.bind) { Function.prototype.bind = function (oThis) { if (typeof this !== "function") { TypeError("Function.prototype.bind - what is trying to be bound is not callable"); } var aArgs = Array.prototype.slice.call(arguments, 1), fToBind = this, fNOP = function () {}, fBound = function () { return fToBind.apply(this instanceof fNOP ? this : oThis || this, aArgs.concat(Array.prototype.slice.call(arguments))); }; fNOP.prototype = this.prototype; fBound.prototype = new fNOP(); return fBound; }; }
ÊÖдÊý×é¿ìËÙÅÅÐò/È¥ÖØ
¡¡