2013-02-21 3 views
0

북마크를 관리 중이며 클릭하면 모든 웹 사이트에서 스마일리가 생성됩니다.
자바 스크립트가 완벽하게 작동하지만 동일한 스크립트가 북마크릿에서 완벽하게 작동하지 않습니다 (성가신 결과).북마크 릿에서 오류가 있고 자바 스크립트가 아닙니다.

자바 스크립트 jsfiddle
북마크 jsfiddle

지금은 단지

javascript:(function() { 
// All javascript code 

} 
)(); 

내가 드래그 앤 스마일을 드롭 할 수 있도록 북마크 스크립트를 관리하는 방법을 제안 해주십시오처럼 북마크를 위해 배치되어 일을.

답변

0

변화

document.onmouseup=new Function("isdrag=false"); 

document.onmouseup = function() {isdrag=false}; 

에 이유는 : 당신이 북마크를 생성하는 외부 기능 블록에있는 모든 코드를 감을 때는 "var에 isdrag"의 범위는 창에서 변경 그 외부 기능에 국부적으로된다. 반면에 new Function("isdrag=false")은 현재 범위를 이스케이프하는 창 수준에서 새 함수를 만들고 새로 만든 함수의 "isdrag"는 액세스하고 있다고 생각하는 "var isdrag"에 액세스 할 수 없습니다. 해결 방법은 "new Function (...)"을 사용하지 않고 "var isdrag"와 동일한 범위 내에서 새 함수를 만드는 것입니다.

+0

정말 고마워요. :) – vusan