【问题标题】:jQuery effect on iframe parent documentjQuery对iframe父文档的影响
【发布时间】:2011-01-11 23:48:31
【问题描述】:

只是想知道是否有其他人经历过这种情况或知道我为什么会出错。我在 iframe 中使用 javascript 来调用父 dom 元素,然后使用 jQuery UI 的效果核心来摇动它。这是一个例子:

$(document).ready(function(){
    if ($("form").length>0)
    {
        $("form").submit(function(){
            var oParentDoc = $(parent.document).find("div#element");
            var action = $(this).attr("action");
            var postdata = $(this).serialize();
            $(oParentDoc).addClass("loading");
            $.post(action,postdata,function(data){
                $(oParentDoc).removeClass("loading").effect("shake",{"times":3,"distance":10},60);
            });
            return false;
        });
    }
});

它可以在没有效果的情况下工作,但是当我使用效果时它会给我这个错误:

未捕获的异常:[异常... "组件返回故障码: 0x80040111 (NS_ERROR_NOT_AVAILABLE) [nsIDOMCSSStyleDeclaration.getPropertyValue]" nsresult:“0x80040111 (NS_ERROR_NOT_AVAILABLE)"

提前感谢您的任何见解:)

【问题讨论】:

  • 在将事件从 iframe 绑定到父级时遇到了类似的问题,但它与谷歌地图有关。对我来说,它可以在其他浏览器中运行,甚至仍然可以在 ff 中运行,但是抛出了错误。我只是使用了 try/catch,并没有真正解决问题,但让我继续 -

标签: javascript jquery iframe parent effect


【解决方案1】:

我不确定这是否可行,但您可以尝试在父级中设置绑定事件,然后在 iFrame 中尝试在父级中触发该事件。

父 JavaScript

$(document).ready(function(){
    $('#iframe').bind('shakeFrame',function(){
        $('#iframe').effect("shake",{"times":3,"distance":10},60);
    });
});

iFrame JavaScript

$(document).ready(function(){
    $(parent.document).find('#iframe').trigger('shakeFrame');
});

【讨论】:

    【解决方案2】:

    可能是您的 Iframe 规范已定义。因此不允许使用 iframe 进行任何移动/更改?

    【讨论】:

    • 嗯.. 虽然这确实有某种意义,但我认为情况并非如此.. 因为我有一个持有 iframe 的 div 并且该 div 应用了 ui 可拖动功能。我可以毫无问题地拖放 iframe。这里的不同之处在于我在 iframe 之外的 javascript 文件中设置了可拖动对象。我也可以从外部摇动 iframe,但不能从内部摇动。
    • JS文件的引用在哪里呢。因为如果您有子文件夹,Iframe 不再“据说”在同一个地方。因此,可能有 Iframe 页面引用,就好像它在您正在使用的页面中一样。我目前正在尝试解决转换为 PHP 页面等的类似问题。
    【解决方案3】:

    您是否已将必要的 jQuery 文件加载到父文档和 iframe 文档中?

    更新:互联网上的一项小研究表明,“效果”代码可能正在调用“getPropertyValue”,而 Firefox 声称该方法不存在。我知道 - 不是很有帮助。不幸的是,我相信您将不得不调试“效果”代码以更具体地找出这是谁的错误,或者可能会发现它是您尝试运行的 iframe 场景的限制。

    【讨论】:

    • 是的 :) 这是我检查的第一件事。我在 iframe 和外部加载了 jquery 1.3.2 和 effects.core.js 和 effects.shake.js。
    猜你喜欢
    • 2015-10-17
    • 2015-03-31
    • 2012-08-20
    • 2010-12-07
    • 1970-01-01
    • 1970-01-01
    • 2011-06-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多