AMcoder - javascript, python, java, html, php, sql

fokus() ֆունկցիան չի աշխատում Firefox-ում

Ես ունեմ որոշ JS, որը ցույց է տալիս որոնման մոդալը և տալիս է որոնման կենտրոնացումը: Այն կարծես այսպիսին է.

function searchOpen(event) {
  event.preventDefault();
  searchOverlay.classList.add("show");
  searchOverlayInput.focus();
}

Թվում է, թե chrome-ում և safari-ում լավ է աշխատում, բայց FireFox-ում որոնումը չի կենտրոնանում:

Ես գտա:

Javascript ֆոկուսը չի աշխատում firefox-ում

javascript focus() չի՞ աշխատում Firefox-ի և IE-ի վրա:

Երկու պատասխաններն էլ հուշում են 2 բան

  1. Օգտատիրոջ հատուկ կարգավորում
  2. do a setTimeout()

Իմ iMac-ում օգտատիրոջ հատուկ կարգավորումներ չկան, որոնք կխանգարեն դա տեղի ունենալ: Ինչ վերաբերում է թիվ 2 առաջարկին, ես փորձեցի.

function searchOpen(event) {
  event.preventDefault();
  searchOverlay.classList.add("show");
  setTimeout(function(){searchOverlayInput.focus();}, 1);
}

Այն դեռ չի աշխատում:

Կա՞ն գաղափարներ:

13.04.2018

  • կարո՞ղ եք տրամադրել մի հատված, որպեսզի մենք կարողանանք այն փորձարկել: 13.04.2018
  • Այո, ինձ մեկ րոպե տվեք ... 13.04.2018
  • Ես պատրաստել եմ ջութակը, բայց այն աշխատում է: Բայց իմ իրական նախագծում դա այդպես չէ… 13.04.2018
  • Հավանաբար, սրանից հետո այլ բան կա, որ կիզակետում է: Փորձե՞լ եք վրիպազերծել: Տեղադրեք ընդմիջման կետ՝ ստուգելու համար, թե արդյոք ձեր տարրը կենտրոնացած է առաջին տեղում: 13.04.2018

Պատասխանները:


1

Ես գործարկում եմ կոդն այսպես՝ տեսնելու, թե արդյոք հասանելի է որևէ տարր՝ կենտրոնանալու համար: Հիմնականում ստուգեք, թե արդյոք այն տեսանելի է, եթե ոչ, ապա նորից ստուգեք, մինչև այն կարողանա կենտրոնանալ:

function focusWhenVisible (elem) {
  var cnt = 0;
  var check = function () {
    if (elem.offsetHeight) {  //reports zero when hidden
      elem.focus()
    } else if (cnt++ < 1000) {  // only check for a certain amount of iterations
      setTimeout(check, 1);
    }
  }
  check()
}

document.querySelector("#b1").addEventListener("click", function () {
    var inp = document.querySelector("#in1");
    focusWhenVisible(inp)
    inp.removeAttribute("hidden");
});


document.querySelector("#b2").addEventListener("click", function () {
    var inp = document.querySelector("#in2");
    focusWhenVisible(inp)
    window.setTimeout(()=>{inp.removeAttribute("hidden");},500)
});
<input type="input" id="in1" hidden />
<button type="button" id="b1">Click</button>


<input type="input" id="in2" hidden />
<button type="button" id="b2">Click w/ Delay</button>

13.04.2018
  • Շնորհակալություն սրա համար: Բայց այս օրինակն աշխատում է firefox-ում: Ես պատճենեցի տեղադրեցի հիմնական նշագրումը և կոդը իմ նախագծից (որտեղ այն չի աշխատում), բայց չեմ կարող կրկնել այն... Ես վստահ չեմ, թե ինչ է կատարվում: Շնորհակալություն։ 18.04.2018
  • Նոր նյութեր

    Օգտագործելով Fetch Vs Axios.Js-ը՝ HTTP հարցումներ կատարելու համար
    JavaScript-ը կարող է ցանցային հարցումներ ուղարկել սերվեր և բեռնել նոր տեղեկատվություն, երբ դա անհրաժեշտ լինի: Օրինակ, մենք կարող ենք օգտագործել ցանցային հարցումը պատվեր ներկայացնելու,..

    Տիրապետել հանգստության արվեստին. մշակողի ուղեցույց՝ ճնշման տակ ծաղկելու համար
    Տիրապետել հանգստության արվեստին. մշակողի ուղեցույց՝ ճնշման տակ ծաղկելու համար Ինչպե՞ս հանգստացնել ձեր միտքը և աշխատեցնել ձեր պրոցեսորը: Ինչպես մնալ հանգիստ և զարգանալ ճնշման տակ...

    Մեքենայի ուսուցում բանկային և ֆինանսների ոլորտում
    Բարդ, խելացի անվտանգության համակարգերը և հաճախորդների սպասարկման պարզեցված ծառայությունները բիզնեսի հաջողության բանալին են: Ֆինանսական հաստատությունները, մասնավորապես, պետք է առաջ մնան կորի..

    Ես AI-ին հարցրի կյանքի իմաստը, այն ինչ ասում էր, ցնցող էր:
    Այն պահից ի վեր, երբ ես իմացա Արհեստական ​​ինտելեկտի մասին, ես հիացած էի այն բանով, թե ինչպես է այն կարողանում հասկանալ մարդկային նորմալ տեքստը, և այն կարող է առաջացնել իր սեփական արձագանքը դրա..

    Ինչպես սովորել կոդավորումը Python-ում վագրի պես:
    Սովորելու համար ծրագրավորման նոր լեզու ընտրելը բարդ է: Անկախ նրանից, թե դուք սկսնակ եք, թե առաջադեմ, դա օգնում է իմանալ, թե ինչ թեմաներ պետք է սովորել: Ծրագրավորման լեզվի հիմունքները, դրա..

    C++-ի օրական բիթ(ե) | Ամենաերկար պալինդրոմային ենթաշարը
    C++ #198-ի ամենօրյա բիթ(ե), Ընդհանուր հարցազրույցի խնդիր. Ամենաերկար պալինդրոմային ենթատող: Այսօր մենք կանդրադառնանք հարցազրույցի ընդհանուր խնդրին. Ամենաերկար palindromic substring...

    Kydavra ICAReducer՝ ձեր տվյալների ծավալայինությունը նվազեցնելու համար
    Ի՞նչ է ICAReducer-ը: ICAReducer-ն աշխատում է հետևյալ կերպ. այն նվազեցնում է նրանց միջև բարձր փոխկապակցված հատկանիշները մինչև մեկ սյունակ: Բավականին նման է PCAreducer-ին, չնայած այն..