JQuery UI диалоговое окно отображается внутри фрейма, из букмарклета? - PullRequest
0 голосов
/ 06 июля 2010

Я пишу букмарклет, который должен работать в контексте страниц, дизайн которых я не контролирую. На некоторых страницах мне нужен букмарклет, чтобы он работал в фреймах (в фреймах). Возможно ли, чтобы диалог jQuery-UI работал внутри фрейма?

В настоящее время, когда я сталкиваюсь со страницей с набором фреймов, я создаю свой диалог следующим образом:

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

В результате jQuery добавляет элемент div пользовательского интерфейса к основному документу, а не к документу фрейма. Поскольку основной документ - это просто набор фреймов, ничего не отображается. Я не могу найти какие-либо параметры в API jquery-ui, чтобы указать, в какой документ должны быть встроены виджеты. Букмарклет обязательно будет работать (или, по крайней мере, запускаться) в контексте внешнего документа.

Я знаю, что невозможно наложить оверлей на кадры ; Мне удобно с отображением только в одном кадре. Кроме того, некоторые другие известные букмарклеты не работают на страницах с наборами кадров, поэтому это может быть распространенной проблемой.

Предложения

Ответы [ 2 ]

0 голосов
/ 19 июля 2010

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

Примерно так:

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 голосов
/ 06 июля 2010

Букмарклеты обычно не используют jQuery. Большинство букмарклетов открывают окно с jQuery.

...