2012-12-10 1 views
0

У меня есть простой букмарклет для представления в подсказке() значения мета элемента. Он работает, но после запуска окна загружается либо строка «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

Принятый путь в эти дни, чтобы обернуть свой код в «немедленно вызвано выражении функции», как этот

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

Это лучше, чем добавление void(0); в конце, потому что оборачивать код в функции предотвращает конфликты между именованной переменной и функцией в вашем букмаркете и те, которые находятся в области родительского HTML-документа.

Другими словами, если вы запустите свой букмарклет, как сейчас, на веб-странице, которая использует код 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