相关疑难解决方法(0)

jQuery .ready在动态插入的iframe中

当有人点击图片时,我们使用jQuery thickbox动态显示iframe.在这个iframe中,我们使用galleria一个javascript库来显示多张图片.

问题似乎是$(document).ready在iframe似乎过早被解雇并且iframe内容甚至尚未加载,因此galleria代码未在DOM元素上正确应用. $(document).ready似乎使用iframe父就绪状态来决定iframe是否准备就绪.

如果我们在单独的函数中提取由文档就绪调用的函数,并在超过100毫秒后调用它.它有效,但我们不能利用慢速计算机生产机会.

$(document).ready(function() { setTimeout(ApplyGalleria, 100); });
Run Code Online (Sandbox Code Playgroud)

我的问题:我们应该绑定哪个jQuery事件,以便在动态iframe准备就绪时能够执行我们的代码,而不仅仅是它的父级?

javascript iframe jquery thickbox galleria

181
推荐指数
4
解决办法
34万
查看次数

IFRAME加载完成后的Javascript回调?

我需要在IFRAME加载完成后执行回调.我无法控制IFRAME中的内容,因此我无法从那里触发回调.

这个IFRAME是以编程方式创建的,我需要将其数据作为回调中的变量传递,并销毁iframe.

有任何想法吗?

编辑:

这就是我现在拥有的:

function xssRequest(url, callback)
{
    var iFrameObj = document.createElement('IFRAME');
    iFrameObj.src = url;            
    document.body.appendChild(iFrameObj);   

    $(iFrameObj).load(function() 
    {
        document.body.removeChild(iFrameObj);
        callback(iFrameObj.innerHTML);
    });
}
Run Code Online (Sandbox Code Playgroud)

在iFrame加载之前进行此回调,因此回调没有返回数据.

javascript iframe events dom

145
推荐指数
7
解决办法
26万
查看次数

如何检查iframe是否已加载或是否有内容?

我有一个id ="myIframe"的iframe,这里我的代码加载它的内容:

$('#myIframe').attr("src", "my_url");
Run Code Online (Sandbox Code Playgroud)

问题是有时加载时间太长,有时加载速度很快.所以我必须使用"setTimeout"函数:

setTimeout(function(){
   if (//something shows iframe is loaded or has content)
   {
       //my code
   }
   else
   {
       $('#myIframe').attr("src",""); //stop loading content
   }
},5000);
Run Code Online (Sandbox Code Playgroud)

我想知道的是如何确定iFrame是否已加载或是否具有内容.使用iframe.contents().find()不起作用.我不能用iframe.load(function(){}).

javascript iframe jquery

69
推荐指数
7
解决办法
17万
查看次数

检测iframe中的DOMContentLoaded

我很惊讶地发现以下似乎不起作用,因为DOMContentLoaded事件不会触发(this.els是元素的对象).

this.els.stage_ifr.prop('src', 'templates/'+ee.globals.creating+'/item'+this.id);
this.els.stage_ifr[0].addEventListener('DOMContentLoaded', function() {
    alert('loaded!');
}, false);
Run Code Online (Sandbox Code Playgroud)

该页面加载到iframe中,但没有回调.onload但是,DOM级别为零.

this.els.stage_ifr[0].onload = function() { alert('loaded!'); }; //<-- fires
Run Code Online (Sandbox Code Playgroud)

解决方法是在父页面中准备一个全局可访问的jQuery延迟对象,并通过从调用iframe的页面触发的DOM-ready事件来解决它,而不是从父级侦听DOM-ready.

Paraent页面:

dfd = new $.Deferred;
dfd.done(function() { alert("frame page's DOM is ready!"); });
Run Code Online (Sandbox Code Playgroud)

框架页面:

$(function() { window.parent.dfd.resolve(); });
Run Code Online (Sandbox Code Playgroud)

尽管如此,知道第一种方法是什么还是很好的...

javascript iframe events dom domready

10
推荐指数
2
解决办法
1万
查看次数

如何使用cypress将数据输入iframe中的表单输入?

我一直在尝试使用cypress.io测试条带结帐表单

如果有人设法让这个工作,请告诉我.我在这里找到了一个关于这个问题的帖子https://github.com/cypress-io/cypress/issues/136并基于此我想出了:

   cy.get('iframe.stripe_checkout_app')
      .wait(10000)
      .then($iframe => {
        const iframe = $iframe.contents()
        const myInput0 = iframe.find('input:eq(0)')
        const myInput1 = iframe.find('input:eq(1)')
        const myInput2 = iframe.find('input:eq(2)')
        const myButton = iframe.find('button')

        cy
          .wrap(myInput0)
          .invoke('val', 4000056655665556)
          .trigger('change')
        cy
          .wrap(myInput1)
          .invoke('val', 112019)
          .trigger('change')

        cy
          .wrap(myInput2)
          .invoke('val', 424)
          .trigger('change')

        cy.wrap(myButton).click({ force: true })
      })
Run Code Online (Sandbox Code Playgroud)

但问题是条带形式仍然没有注册输入值.以下是http://www.giphy.com/gifs/xT0xeEZ8CmCTVMwOU8发生的一些小故事.基本上,表单不会注册更改输入触发器.

有谁知道如何使用cypress将数据输入到iframe中的表单中?

javascript testing cypress

9
推荐指数
3
解决办法
5931
查看次数

如果load-event已经触发,则将load-event绑定到iframe或run function

假设我想将load-event绑定到iframe:

var callback = function() {
    //Loaded
};
$('iframe').one('load', callback);
Run Code Online (Sandbox Code Playgroud)

这很好用,除了我不能确定iframe尚未加载.在这种情况下,load-event已经触发,我的函数永远不会运行.

如何检查iframe是否已加载?

var callback = function() {
    //Loaded
};
if(iframe already loaded) {
    callback();
} else {
    $('iframe').one('load', callback);
}
Run Code Online (Sandbox Code Playgroud)

javascript iframe jquery event-handling

5
推荐指数
1
解决办法
499
查看次数