2012-06-23 2 views
10

자바 스크립트 파일 업로드 라이브러리로 작업하고 있는데, 그 중 하나는 HTML5 인라인 데이터 속성을 사용하여 플러그인에 정보를 전달한다는 것입니다.인라인 데이터 속성을 통해 Javascript 함수 전달

이것은 데이터와 관련된 모든 데이터, 문자열, 숫자 등에서 유용합니다. 그러나 플러그인에는 함수를 할당 할 수있는 콜백 메소드가 있습니다. 내 문제는이 인라인 데이터를 통해 자바 스크립트 함수를 통과 할 때하는 것은 다음과 같은 속성이다 :

<input type="file" name="test" data-on-finish="alert();"> 

플러그인은 onFinish() 콜백 메소드 벌금에 대한 참조를 집어 들고 있지만, 어떤 자바 스크립트를 실행하려고 할 때

Uncaught TypeError: Object alert(); has no method 'call' 

나는 그것이 문자열로 alert();를 읽고 있어요 있으리라 믿고있어 : 나는이 오류가 넣어. 어떤 아이디어를 어떻게 플러그인을 실행 가능한 자바 스크립트를 통해 전달할 수 있습니까? https://github.com/blueimp/jQuery-File-Upload/wiki/Options

업데이트 :이 같은 나는 또한 전역으로 정의 기능을 사용하려고했습니다 :

<script type="text/javascript"> 
    function myTesting(){ 
     alert('yay'); 
    } 
</script> 
<input type="file" name="test" data-on-finish="myTesting"> 

내가 사용하고 플러그인이 jQuery를 파일 업로드 플러그인의 확장으로 생각

나는 ... 아직 운이 없었다, myTesting, myTesting()data-on-finish 속성을 변경하려고했습니다

+0

()없이 시도 했습니까? – Flash

+0

시도 해보세요, 행운이 없습니다. 위의 업데이트를 추가했습니다. – petehare

+0

eval()이 작업을 수행하지만 위험 할 수 있다고 생각합니다. http://stackoverflow.com/questions/86513/why-is-using-the-javascript-eval-function-a-bad-idea –

답변

19

대신 콜백 이름을 지정하지 않으시겠습니까? 이 myfunction.call에서와 같이, 다시 함수를 호출하려고처럼 보이는

//for example, a global function 
window['someFunctionName'].call(); 

//a namespaced function 
//similar to doing ns.someFunctionName() 
ns['someFunctionName'].call(); 
+0

이 방법으로 이름 공간 함수를 호출하는 방법에 +1. – sabithpocker

+0

불행히도 아무 소용이 시도했다. 여전히 문자열에'call()'메서드를 호출하려고 시도하고 있습니다. – petehare

+0

@petehare 아니요, 문자열을 호출하지 않습니다. 해답은 해당 문자열을 사용하여 특정 네임 스페이스의 해당 함수를 가리 킵니다. – Joseph

0

같은 일이 (

한번에 통과는이 같은 기능입니다. 같은

<input type="file" name="test" data-on-finish="myFunction;"> 

function myFunction(){ 
alert('I am alerting'); 
}; 
+0

비슷한 일이 일어나고 있습니다. 문자열로 'myFunction;'을 읽고 문자열에''myFunction; ". call()'메서드를 실행하려고합니다 ... – petehare

0

사용 뭔가 이 :

$(function() { 
 
    function test() { 
 
    alert("ok"); 
 
    } 
 

 
    $(".test").data("test", test); 
 
    $(".test").data("test")(); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script> 
 
<div class="test"> 
 
</div>

관련 문제