2011-01-21 5 views
1

iFrame을 삽입하고 거기에서 수행해야 할 작업을 수행하는 것이 가장 좋습니다. 따라서 여분의 스크립트, CSS 스타일 등으로 페이지를 복잡하게 만들지 않으십니까? 메인 윈도우와 iFrame 사이에서 이야기 할 수 없을 때 어떻게 완료되었는지 감지하고 iFrame을 제거합니까?자바 스크립트 북마크릿에 일반적으로 받아 들여지는 디자인 패턴은 무엇입니까?

DOM에 scripts/CSS를 삽입하여 사용할 수 있습니까?

주된 예로는 Instapaper 북마크릿이 있습니다. Instapaper 북마크릿은 iFrame을 사용하고 모두 완료되면 닫습니다.

답변

1

내가 해왔 던 모든 북마크는 기본 페이지의 DOM에 직접 삽입됩니다. 모든 코드는 북마크에 대한 네임 스페이스 안에 있으므로 DOM 오염이 최소화되고 물론 기존 변수 이름과의 충돌이 없는지 확인하는 검사가 있습니다. 이 모든 것을 쉽게하기 때문에

주 문서의 DOM에 삽입하는 이유는 - 그것은

그러나 물론

이 달려 :)이어야보다 자신에 어렵게 만들 수있는 좋은 이유가 거의 없다 당신의 목표에.

0

은 패턴 1 :

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

: 그것은 void 연산자 document.write를 전달하고 임의의 북마크 리턴 값 toString 행동 변환 도착

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

는 패턴 2

을 방지 북마클릿은 전역 범위에서 실행되므로 위의 익명의 함수 코드를 사용하지 않으면 루프 카운터가 누설 될 수 있습니다. window.i

관련 문제