Неліктен терезені жазыңыз [«eval»] .call (терезе, деректер);

JQuery 1.7rc1 жолының 614 жолы:

терезесі [«бағалау»] .call (терезе, деректер);

Неліктен жай ғана жазу керек

eval.call( window, data );?

9

2 жауаптар

Жауап мына жерде: Javascript jQuery ,

Джим Дрисколл стандарттарға сай келетін браузерлер үшін,   сіз eval.call (терезе, деректер), бірақ Chrome және IE үшін, нәрселерді пайдалана аласыз   бірнеше ерекшеленеді.

     

Internet Explorer: IE терезе window.execScript (деректер) пайдаланады.

     Chrome ішіндегі Chrome: eval.call (терезе, деректер) үзілістері, бірақ терезе [«бағалау»   ] .call (терезе, деректер) Chrome-да, сондай-ақ басқа IE емес   браузерлер, жоғарыда келтірілген шешімдерге негізделген.
7
қосылды
Hmm, eval.call кем дегенде Chrome 14-де жақсы жұмыс істейді.
қосылды автор James Allardice, көзі
Ия, мен де ойладым. Мен Chrome 14-де жұмыс істейтінін атап өттім. jQuery ол жұмыс істемейтін браузерлер болған кезде оны сақтауға мәжбүр болады (бұл әрқашан болады!)
қосылды автор James Allardice, көзі
Мен себебін тек түсініктеме таптым деп жазған жоқпын .... Chrome 14-лер ескі нұсқалардан гөрі стандарттарға жақындады, ал jQuery тек қана браузерлермен айналысуды мақсат етіп қояды.
қосылды автор scrappedcola, көзі

көзіне қарап шыққаннан кейін мен бұл сілтеме . Аталған мәтінді қараңыз:

Өкінішке орай, eval.call (терезе, src) Chrome браузерлерінде бұзылады - ол шағымданады   контекстер сәйкес келмейді. Odd - мен Google-ті неге бұлай ете алмадым   болуы мүмкін. Бірақ кейінірек ерлі-зайыптылар іздейді, мен оны таптым   window.eval.call (терезе, src) барлық IE емес браузерлерде жұмыс істейді. Енді, мен   «var j = 1» деп айтыңыз, терезе [j] - бұл айнымалы мән ... Осылайша,   Бұл жақсы. Неге біз қосымша терезені қосуымыз керек? Chrome браузерінде? Жоқ   Мен сенімдімін - болжауға болатын едім, бірақ қате болуы мүмкін.

Сонымен, window.eval Chrome ішіндегі globalEval жұмысын алу үшін пайдаланылады.

3
қосылды
Chrome 14-те жақсы жұмыс істеген сияқты көрінеді. Бірақ бұл мақала 2009 жылдан бері жүріп жатыр, сондықтан Chrome-ның қатесі болған кезде, мен оны таң қалдырмаймын.
қосылды автор James Allardice, көзі
Иә, білемін. Қазір Chrome-да жұмыс істеп жатқанын еске түсірдім. Әрине, jQuery ескі Chrome-ді түзетуге тура келеді.
қосылды автор James Allardice, көзі
@JamesAllardice Chrome-дің ең жаңа нұсқасын пайдаланбаған пайдаланушылар әлі де бар. jQuery мүмкіндігінше көптеген браузерлерді қолдауға арналған.
қосылды автор Rob W, көзі
@Neil Мен ағымдағы жауаптардың неге window.eval түсіндірмегенін түсіндім. eval әдісін өте мұқият талдау болып табылатын осы көзге көз жүгіртіңіз: perfectionkills.com/global-eval-what-are-the-options/…
қосылды автор Rob W, көзі
Сонымен, window.eval (data) -де не дұрыс емес?
қосылды автор Neil, көзі
Осы сілтеме үшін рақмет, window.eval.call (терезе, src) қажетсіз ұзақ уақытқа созылғанын түсіндіреді. Шындығында, (window.execScript || eval) (src) жеткілікті. (Егер сіз execScript қолданғыңыз келмесе, window.eval (src) - келесі жақсы нәрсе.)
қосылды автор Neil, көзі