在 iframe 中创建可排序的 jQuery UI

2023-11-21

在页面上我有一个 iframe。在这个 iframe 中是我需要进行排序的项目的集合。所有 Javascript 都在父页面上运行。我可以访问 iframe 文档中的列表并使用上下文创建可排序:

var ifrDoc = $( '#iframe' ).contents();

$( '.sortable', ifrDoc ).sortable( { cursor: 'move' } );

然而,当尝试对项目进行实际排序时,我遇到了一些异常行为。一旦单击某个项目,脚本的目标就会更改为外部文档。如果将鼠标移离 iframe,则可以移动该项目并通过单击将其放回原处,但无法在 iframe 内与其进行交互。

例子:http://robertadamray.com/sortable-test.html

那么,有没有一种方法可以实现我想要做的事情 - 最好不必在 jQuery UI 代码中进行修改?


动态添加 jQuery 和 jQuery UI 到 iframe (demo):

$('iframe')
    .load(function() {
        var win = this.contentWindow,
            doc = win.document,
            body = doc.body,
            jQueryLoaded = false,
            jQuery;

        function loadJQueryUI() {
            body.removeChild(jQuery);
            jQuery = null;

            win.jQuery.ajax({
                url: 'http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.18/jquery-ui.min.js',
                dataType: 'script',
                cache: true,
                success: function () {
                    win.jQuery('.sortable').sortable({ cursor: 'move' });
                }
            });
        }

        jQuery = doc.createElement('script');

        // based on https://gist.github.com/getify/603980
        jQuery.onload = jQuery.onreadystatechange = function () {
            if ((jQuery.readyState && jQuery.readyState !== 'complete' && jQuery.readyState !== 'loaded') || jQueryLoaded) {
                return false;
            }
            jQuery.onload = jQuery.onreadystatechange = null;
            jQueryLoaded = true;
            loadJQueryUI();
        };

        jQuery.src = 'http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js';
        body.appendChild(jQuery);
    })
    .prop('src', 'iframe-test.html');

Update: 安德鲁·英格拉姆是正确的jQuery UI 保存并使用对window and document用于加载 jQuery UI 的页面。通过将 jQuery / jQuery UI 加载到 iframe 中,它具有正确的引用(针对 iframe,而不是外部文档)并按预期工作。


更新2:原始代码片段有一个微妙的问题:动态脚本标记的执行顺序无法保证。我已经更新了它,以便在 jQuery 准备好后加载 jQuery UI。

我还将 getify 的代码合并到动态加载 LABjs,因此不需要轮询。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 iframe 中创建可排序的 jQuery UI 的相关文章

  • HTTP 和 HTTPS iframe

    我正在创建一个小部件 我想允许其他人使用它 这iframe通过 HTTP 加载 但我想允许用户通过 HTTPS 登录 即通过 SSL 发送登录请求 同源策略中允许这样做吗 即 场景是用户可以将我的 JavaScript 集成到他们的网站 小
  • 在 Google Chrome 扩展程序中播放盈利的 YouTube 歌曲。我有什么选择吗?

    我在开发 Google Chrome 扩展程序时遇到了巨大的障碍 任何盈利的 YouTube 歌曲 例如带有广告 都不会播放 此处记录了这一点 https developers google com youtube flash api re
  • 使用 jQuery UI 日期选择器选择日历更改 URL

    我正在使用 jQuery UI 选择器 我想知道当有人选择日期时是否有可能 它会自动将他们重定向到 URL 如下所示 index php date 2013 10 15 这是我正在使用的插件 Date
  • defaultDate 选项与 setDate 方法之间的差异

    我正在尝试使用jQueryUI DatePicker 我必须了解的主要事情之一是在页面加载时设置日期的方式 经过一些研究后 我发现有两种不同的方法可以做到这一点 using defaultDate option using setDate
  • 使用postmessage刷新iframe的父文档

    我有一个greasemonkey 脚本 它打开一个iframe 其中包含来自不同子域的表单作为父页面 我想在表单提交后刷新 iframe 时刷新父页面我现在可以在 iframe 刷新时执行一个函数 但无法让该函数影响父文档 我知道这是由于浏
  • 将图像作为框架放置在 iframe 周围?

    我有一个网站尝试以移动格式显示 但在宽屏幕上 我确信 iframe 是正确的选择 我正在尝试将 iframe 加载到 iPhone 的图像中 你可以看一个例子here http webfro gs south tour iframe tes
  • 重定向并保留我的图标

    我想知道当您单击 facebook 上的链接时 facebook 重定向如何保留其 favicon 并使用 FB favicon 打开新选项卡 我想知道如何实现这一点 它不是 iframe 所以我怎么能做这样的事情 我应该从哪里开始 当重定
  • jQuery 插件与小部件

    几个月前 我开始使用 jQuery 插件进行一些实验 我在互联网上找到了一些教程 然后开始整理一些东西 几天前 我需要构建自己的 插件 并回到我的旧项目 当我试图在互联网上找到更多信息时 我偶然发现了这些称为小部件的新 东西 据我了解 我应
  • Jquery UI 日期选择器 设置默认日期

    我使用 jQuery UI 作为日期选择器 我想在字段中显示当前日期作为默认值 以下是我的代码 请帮助 From Date
  • 如何绑定div宽度/高度来形成字段?

    我想创建多个div我可以移动和调整大小 并绑定它们width height等到数组中的对象 因此 如果我创建六个 div 我的数组中有六个对象 每个对象都有 width height etc 我不太明白如何使用 knockout js 将输
  • IE 中的 Google 文档查看器

    我到处寻找解决方案 但找不到 我在用着谷歌文档查看器 https drive googleblog com 2009 09 view online files using google docs html查看 PDF 文件 这是一个很棒的工
  • 动态地将工具提示文本设置为 div 元素

    我正在尝试动态地将工具提示文本设置为容器 div 并对我刚刚添加到有序列表的每个 div 元素 elem Alias Status 使用 jQuery function addNewElement elem var li li li li
  • iFrames 和法律 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 假设参与者 A 在 iF rame 中拥有参与者 B 的站点 除了 url 之外 网站没有任何区别 网址完全不同 参与者 A 使用 B 的
  • jquery ui 滑块范围修复为 RTL

    我想将 Jquery 滑块范围更改为 RTL 我正在使用这个 http jqueryui com slider range http jqueryui com slider range Jquery代码 function slider ra
  • 最大化 iFrame(因此它看起来是请求页面)

    我如何 跨浏览器兼容 最大化 iFrame 以便它看起来是 URL 栏中的页面 即使它是从不同的服务器提供的 我想这应该可行
  • 如何禁用 jQuery UI 对话框上的按钮?

    如何禁用按钮在 jQuery UI 对话框上 http jqueryui com demos dialog modal confirmation 我似乎无法在上面链接的任何文档中找到这一点 我有两个模式确认按钮 确认 和 取消 在某些情况下
  • 将 jquery Ui.ressized() 与 AngularJs 一起使用

    我的模板之一中有一个 DOM 元素 我想使用 jqueryUi 调整其大小 总而言之 我有一个 div 我的模板中名为 test 的元素 除此之外 我还尝试添加脚本来实际在多个位置调整大小 但我已经完全扭转了局面 我一度认为指令可能是正确的
  • 使用 jQuery datepicker 创建特定日期范围

    我正在尝试使用 jQuery 日期选择器来创建开始日期日历和结束日期日历 我正在使用此处看到的 日期范围 示例 http jqueryui com demos datepicker date range http jqueryui com
  • 如何防止在前置时滚动?

    我将内容添加到正文的顶部 有时该内容的高度可能为 400 500 像素 当添加类似的内容时 在阅读页面时将内容向下推可能会非常烦人 我希望这些项目自动添加到前面 而不是像单击此处查看新项目那样 有没有办法在不移动页面的情况下将此内容添加到正
  • jQuery可排序发布数据,但没有数据

    谁能告诉我我在这里缺少什么 我的数据似乎总是空的 我做错了什么 document ready function nav sortable connectWith nav axis y update function event ui var

随机推荐