2010-07-06 4 views
0

디자인을 통제하지 않는 페이지의 컨텍스트에서 작동해야하는 북마크릿을 작성하고 있습니다. 일부 페이지는 북마클릿이 프레임 셋 (프레임 세트)에서 사용하기 위해 필요합니다. jQuery-UI 대화 상자가 프레임 내에서 작동 할 수 있습니까? 나는 프레임이있는 페이지가 발생할 때 현재 jQuery UI 대화 상자가 북마크 릿에서 프레임 안에 표시됩니까?

는,이처럼 내 대화 상자를 만드는 :

var frame = window.frames[0]; 
var div = $(frame.document.createElement("div")); 
div.html("My popup contents"); 
div.dialog(...); 

결과는 jQuery를 오히려 프레임의 문서보다, 주 문서에 UI - 위젯 사업부를 추가한다는 것입니다 . 주 문서는 프레임 세트이므로 아무 것도 표시되지 않습니다. 위젯을 생성해야하는 문서를 지정하기 위해 jquery-ui API에서 옵션을 찾을 수 없습니다. 북마크릿은 외부 문서의 컨텍스트 내에서 실행 중이어야합니다 (또는 최소한 시작해야합니다).

오버레이를 표시 할 수 없음을 알고 있습니다. over the frames; 나는 단 하나의 프레임에서 디스플레이에 익숙하다. 또한 일부 other notable bookmarklets은 프레임 세트가있는 페이지에서 작동하지 않으므로 일반적인 문제 일 수 있습니다.

제안 사항?

답변

0

다음은 내가 프레임 워크를 표시하려고 시도하는 대신 프레임 렛을 제거하고 내 몸과 내용을 페이지에 추가하는 북마크릿을 다시 작성했습니다. 이를 통해 북마크릿은 여전히 ​​프레임을 인트로 스하고 프레임 세트를 제거하기 전에 오버레이를 구성하는 데 필요한 데이터를 가져 오지만 오버레이가 계속 작동 할 수 있습니다. 이 같은

뭔가 : 내 경우

if (window.frames) { 
    for (var i = 0; i < window.frames.length; i++) { 
     // ... grab data from the frame ... 
    } 
} 

if ($("frameset")) { 
    $("html").children("frameset").remove(); 
    document.body = document.createElement("body"); 
    $("html").append(document.body); 
    // ... add my stuff to body ... 
} 
0

일반적으로 북마크릿은 jQuery를 사용하지 않습니다. 대부분의 북마크릿은 jQuery가있는 창을 엽니 다.

+0

는 북마크 페이지에 jQuery를 주입없는 충돌 모드에서 실행 중입니다. 이 북마크릿의 디자인 요구 사항 중 하나는 새 창을 열지 않는다는 것입니다. – user85461