jQuery UI对话框显示在框架内,来自bookmarklet?

时间:2010-07-06 16:18:34

标签: jquery-ui dialog bookmarklet frames frameset

我正在编写一个bookmarklet,需要在我无法控制的设计页面的上下文中工作。有些页面我需要使用bookmarklet来使用框架(在框架集中)。 jQuery-UI对话框是否可以在框架内工作?

目前,当我遇到带有框架集的页面时,我创建了如下对话框:

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

结果是jQuery将ui-widget div附加到主文档,而不是框架的文档。由于主文档只是一个框架集,因此不显示任何内容。我在jquery-ui API中找不到任何选项来指定构造小部件的文档。小书签必须在外部文档的上下文中运行(或至少开始)。

我知道无法显示叠加层over the frames;我只对一帧显示感到​​舒服。此外,某些other notable bookmarklets无法在具有框架集的页面上运行,因此这可能是一个常见问题。

建议?

2 个答案:

答案 0 :(得分:0)

Bookmarklets通常不使用jQuery。大多数bookmarklet打开一个带有jQuery的窗口。

答案 1 :(得分: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 ...
}