복붙노트

[JQUERY] 트리거) (완료 비동기 아약스에 입력 = 파일을 클릭

JQUERY

트리거) (완료 비동기 아약스에 입력 = 파일을 클릭

해결법


  1. 1.그것의 불가능 바로 지금의 파일 팝업 창을 엽니 다 비동기 AJAX 콜백으로 인해 브라우저에서 W3C 권장 보안 기능.

    그것의 불가능 바로 지금의 파일 팝업 창을 엽니 다 비동기 AJAX 콜백으로 인해 브라우저에서 W3C 권장 보안 기능.

    파일 입력 요소의 활성화 동작에서 먼저 검사 알고리즘은 다음 단계 중단 다른 아무것도하지 않고하지 않을 경우 다음, 팝업을 표시 할 수있는 경우. w3c.org에서

    알고리즘은 다음과 같은 경우 팝업을 표시 할 수있다 :

    w3c.org

    코드의 클릭 이벤트는 사용자가 트리거되지 않습니다하지만 아약스 완전한 콜백에 의해 트리거. 여기에 브라우저는 이벤트 팝업을 열려면 신뢰할 수 없음을 선언한다. 이벤트가 trusted.https로 선언 된 경우 일부 브라우저에서는 사실에 isTrusted 속성 세트를 볼 수 있습니다 //developer.mozilla.org/en-US/docs/Web/API/Event/isTrusted를

    노트

    다른 브라우저 트랩 스크립트를 활성화 cick 다른 방법을 사용하여 실제 사용자의 차이.

    당신이이 시나리오에서 할 수있는 것은 파일 입력 버튼 (또는 전체 양식)를 해제하고 아약스가 완료된 후 수 있도록하는 것입니다. 아약스 요청이 완료 때까지 사용자가 업로드 버튼을 클릭 늘 그런 식으로. 현재로서는 개방 팝업에 대한도 기간 제한이 있기 때문에 한 번의 클릭으로 모두를 할 수있는 다른 방법이 없습니다. 내가 크롬 체크하면 기간은 1000MS입니다. 사용자 동작 후 1000MS는 창이 열리지 않습니다.


  2. 2.JQuery와 자체가 말한다, 트리거는 파일 업로드 및 앵커 등의 요소에 대해 작동하지 않습니다. (소스 - https://learn.jquery.com/events/triggering-event-handlers/)

    JQuery와 자체가 말한다, 트리거는 파일 업로드 및 앵커 등의 요소에 대해 작동하지 않습니다. (소스 - https://learn.jquery.com/events/triggering-event-handlers/)

    이 경우에 그래서, 당신은 수동으로 다음과 같은 자바 스크립트 기능을 사용하여 이벤트를 만들어야 할 수도 있습니다.

    의 샘플 코드 + 정의 기능은 모질라의 개발자 사이트에서 찾을 수 있습니다 위의-말했다

    https://developer.mozilla.org/samples/domref/dispatchEvent.html

    어쩌면, 이것은 당신을 도움이 될 것입니다.


  3. 3.나는 지금 작동하는 해결책을 가지고 있습니다. 그것은 가까운 장래에 작동하지 않을 수 있도록 보안 위에서 Tkay 언급 기능을 우회으로는, 해킹입니다.

    나는 지금 작동하는 해결책을 가지고 있습니다. 그것은 가까운 장래에 작동하지 않을 수 있도록 보안 위에서 Tkay 언급 기능을 우회으로는, 해킹입니다.

    나는 아약스 요청에 대한 대기 내가 파일 브라우저 대화 상자를 시작하기 전에 검사 할 데이터를 반환하는 타임 아웃을 소개합니다.

    customFileUploadButton.addEventListener('click', function(e) {
    
        var returnValueToCheck; //Value we want to check against
    
        //reference to vanilla JS ajax function that takes callback
        ajax(function(ajaxData) { 
            returnValueToCheck = ajaxData;
        });
    
        setTimeout(function() {
            if (returnValueToCheck !== undefined) { //dummy check for example
                file.click();
            } else {
               console.log("Criteria not fulfilled");
            }
        }, 1000);//timer should be larger than AJAX timeout
    });
    

    솔직히 말해서, 나는 비트 확실치 이유를 정확히 분명히 일반적 행동의 종류를 금지 브라우저 특정 테스트를 통과 제외하고이 작품. 내가 해킹으로 간주 그에.

    내 예는 바닐라 JS이지만, jQuery를 버전을 쉽게 만들 수 있어야합니다. 전체 예를 들어이 JSFiddle를 참조하십시오.

    (이 때문에 잠재적 인 오류와 과실에 대한 의견을 기쁘게, 기여에 처음으로 벤처)

  4. from https://stackoverflow.com/questions/29728705/trigger-click-on-input-file-on-asynchronous-ajax-done by cc-by-sa and MIT license