Каковы / являются общепринятыми шаблонами дизайна для букмарклетов Javascript? - PullRequest
1 голос
/ 22 января 2011

Лучше ли вставлять iFrame и делать там все, что нужно, чтобы не загромождать страницу дополнительными скриптами, стилями CSS и т. Д. Как вы обнаруживаете, что все завершено, и удаляете iFrame, когда вы не можете общаться между главным окном и iFrame?

Допустимо ли вставлять скрипты / CSS в DOM и выполнять там свою работу?

Мой основной пример - букмарклет Instapaper, который использует iFrame и закрывает его, когда все готово.

Ответы [ 2 ]

1 голос
/ 22 января 2011

Все букмарклеты, которые я когда-либо делал, напрямую вставляются в DOM главной страницы.Весь код находится внутри пространства имен для этого букмарклета, поэтому загрязнение DOM сведено к минимуму, и, конечно, есть проверки, чтобы убедиться, что нет конфликтов с существующими именами переменных.

Причина вставки вDOM основного документа заключается в том, что он делает все проще - редко есть веская причина, чтобы сделать это сложнее для себя, чем должно быть:)

Но, конечно, это зависит от ваших целей.

0 голосов
/ 16 февраля 2011

Шаблон 1:

javascript:void(document.title += 'HAI!')

любое возвращаемое значение букмарклета преобразуется в String и действует так, как оно было передано в document.write. void оператор предотвращает это

Шаблон 2:

javascript:(function(){ for ( var i = 0; i < document.images.length; i++ ) document.images[i].title = document.images[i].alt; })()

bookmarklets работают в глобальной области видимости, поэтому без анонимного кода функции, приведенного выше, счетчик цикла будет "утекать" как window.i

...