2012-12-10 2 views
0

나는 meta 요소의 값을 prompt()로 표현하기위한 간단한 북마크 렛을 가지고있다. 작동하지만 창을 실행 한 후 문자열 "null"또는 프롬프트 값을로드합니다.북마크릿이 결과를로드하지 못하게하는 방법은 무엇입니까?

북마클릿이 페이지로드를 유발하지 않게하려면 어떻게해야합니까?

나는 단지 스크립트가 프롬프트를 팝업하지만 더 이상 아무것도하지 않기를 바란다.

내 bookmarket은 이것이다 : 풀어

javascript:var%20description;var%20metas=document.getElementsByTagName('meta');for(var%20x=0,y=metas.length;x<y;x++){if(metas[x].name.toLowerCase()=="description"){description=metas[x];}}prompt("Meta%20Description",description.content); 

..는 다음과 같습니다

var description; 
var metas=document.getElementsByTagName('meta'); 
for(var x=0,y=metas.length;x<y;x++){ 
    if(metas[x].name.toLowerCase()=="description"){ 
     description=metas[x]; 
    } 
} 
prompt("Meta Description",description.content); 
+0

나는 % 20false를 시도했다. 혁신적인 방법으로 실패 할 수있는 멍청한 시도들. 나는 잘 하네. – Erics

답변

4

이러한 일이 함수에 코드를 포장하기 때문에 마지막에 void(0);을 추가하는 것보다 더 나은이

(function(){ /*your code */})(); 

같은 "즉시 호출 함수 표현식"의 코드를 래핑하는 것입니다 허용 방법 북마크릿 및 부모 HTML 문서의 범위에있는 명명 된 변수와 함수 사이의 충돌을 방지합니다.

즉, 이미 기존 변수 "description"이있는 JavaScript 코드를 사용하는 웹 페이지에서 북마크릿을 실행하면 문제가 발생할 수 있습니다.

2

그것의 끝에서 void(0);를 추가합니다.

javascript:var%20description;var%20metas=document.getElementsByTagName('meta');for(var%20x=0,y=metas.length;x<y;x++){if(metas[x].name.toLowerCase()=="description"){description=metas[x];}}prompt("Meta%20Description",description.content);void(0); 
+0

완벽한 =) – Erics