Odpowiedz

1

Wygląda na to, że zrobiono to przy użyciu javascript i jquery. Złapałam kilka kluczowych linii z minified skryptu na stronie głównej Quora że myślę wspierać tę teorię:

Oto wezwanie ajax do zasobu zapewniając JSON dane:

$.ajax({type:"GET",url:this.resultsQueryPath,dataType:"json",data:a,success:this.fnbind(ƒ(a){this.ajaxCallback(a)}),error:this.fnbind(ƒ(a,b,c){console.log(b,c),this.requestOutstanding=!1,this.$("#@results_shell").html("Could not retrieve results: "+b)})})} 

wiadomości, że udany wynik zostanie wprowadzone do zmiennej "a". Później oto autouzupełnianie na podstawie keydown z „question_box” element, który jest kończenie od rodzica „a”

this.$ ("#@item input.question_box").keydown (ƒ (b) { 
if (b.keyCode==9&&!b.shiftKey)for (var c=e.getLiveDomId (a.cid),d=a.parent().orderedVisibleChildren(),f\^M=0;f<d.length-1;++f)if (c==d [f]) { 
$ (this).blur(),$ ("#"+d [f+1]+" input.question_box").focus();return!1} 
}) 

Myślę, że to całkiem bezsporny, ale nadal byłoby miło mieć nie- zminimalizowany skrypt do porównania. Na przykład nie widzę skąd pochodzi resultQueryPath (nie mogę zlokalizować jej źródła, może być celowo zaciemniona).

+0

To jest główne pytanie ... w jaki sposób wynik zostaje wprowadzony do zmiennej "a", autouzupełnianie po stronie klienta nie jest wielką sprawą, gdy masz mały zestaw wyników. moje pytanie dotyczy dopasowywania prefiksu w czasie rzeczywistym na zapleczu. – r15habh

+0

Ah Widzę, do czego zmierzasz, dobra uwaga. Wydaje mi się, że Quora ma około 200 000 pytań, a te nie mogły być załadowane po stronie klienta. Nie pracuję w Quora, więc nie mogę naprawdę spekulować. – jpredham

Powiązane problemy