我需要在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加载之前进行此回调,因此回调没有返回数据.
我试图检查用户单击按钮后是否加载了iframe.
我有
$('#MainPopupIframe').load(function(){
console.log('load the iframe')
//the console won't show anything even if the iframe is loaded.
})
Run Code Online (Sandbox Code Playgroud)
HTML
<button id='click'>click me</button>
//the iframe is created after the user clicks the button.
<iframe id='MainPopupIframe' src='http://...' />...</iframe>
Run Code Online (Sandbox Code Playgroud)
有什么建议?
顺便说一句,我的iframe是动态创建的.它不会加载初始页面加载.
$('#someIframe').load(function(){...})如果在iframe完成加载后附加它,它似乎不会触发.那是对的吗?
我真正喜欢的是拥有一个在加载iframe时或之后总是被调用一次的函数.为了更清楚,这里有两种情况:
我怎样才能做到这一点?
当用户单击按钮时,我的脚本会加载iframe.我想在iframe加载后调用另一个函数,但它不起作用.iframe确实正常加载,但iframe完成加载后永远不会调用.load()事件.iframe包含来自同一网站的内容(无外部内容).奇怪的是,我在我的代码中的其他几个点使用了下面描述的相同技术,它运行得很好.谁能建议我接下来应该检查什么?
这是相关的代码:
$('#myIframe').load(function () {
alert('iframe loaded');
});
$('#someButton').live('click', function () {
$('body').append($('<iframe id="myIframe" src="https://www.mywebsite.com" width="100%"></iframe>'));
});
Run Code Online (Sandbox Code Playgroud) 我正在使用.NET WebBrowser控件.我怎么知道网页何时满载?
我想知道浏览器什么时候不提取任何数据.(当IE在状态栏中写'完成'时......).
笔记:
所以我有以下代码执行setInterval,直到可以写入iframe.
$( '#testdiv').append( $('<iframe id="testiframe"/>') );
var t = setInterval(function(){
if(document.getElementById('testiframe') !== 'undefined'){
clearInterval(t);
$('#testiframe').contents().find('body').append('asd');
}
}, 15);
Run Code Online (Sandbox Code Playgroud)
基本上发生的是jQuery创建iframe元素并将其加载到DOM中.但是,iframe不能立即使用,因此编码的其他jQuery调用会在字后面发生.使用这段代码,它会进行简单的间隔检查,直到新的iframe可用,然后将'asd'写入其内容.
我花了大约一个小时尝试将方法链接到iframe创建的不同方法,但没有什么真正起作用.这似乎只是时间问题.我试过$('#testiframe').live('load',function(){}); 而这根本不起作用.
那么有人对此有更清晰的建议吗?
我写了一个脚本,告知用户页面加载缓慢(比如,这是因为互联网连接速度慢).该脚本放在首位,<head></head>非常简单:
var GLOBAL_TIMEOUT = setInterval(function () {
alert("The Internet connection is slow. Please continue waiting.");
}, 30000);
//clear that interval somewhere else when document is ready
$(function () {
clearInterval(GLOBAL_TIMEOUT);
});
Run Code Online (Sandbox Code Playgroud)
在当前示例中,仅提醒信息.是否有任何其他可能的方法来通知用户有关页面缓慢加载的问题(特别是当头部中的某些文件js或css文件非常大且需要一些时间加载时)?我试过操纵DOM(在我看来,在文档准备好之前做的事情是不对的)并document.body导致了null.
设置间隔的解决方案是从这里开始的.任何其他如何做到这一点的想法都非常感谢.
将
$(document).ready
Run Code Online (Sandbox Code Playgroud)
在父页面中等待iframe内容完全加载?
我有一个父页面,其中有一个iFrame.iFrame完全加载后,我需要从父页面调用iFrame中的一个函数.
我将iframe中的body元素的html设置为字符串str,然后我想在下一行访问该内容(这里只是使用警告调用来显示内容)但是html和append函数没有在调用alert语句时完成.
$(function(){
....
$("#notes-tab span.add_draft").bind("click", function(e){
var str = '';
$(this).parent().siblings(".tab-content").children(".para").each(function(ind) {
str += $(this).find('div:first').html();
});
var curr = $("#content_rte").contents().find("body").html();
if (curr == ' ' || curr == '<br>') {
$("#content_rte").contents().find("body").html(str);
}
else {
$("#content_rte").contents().find("body").append(str);
}
alert($("#content_rte").contents().find("body").html());
});
});
Run Code Online (Sandbox Code Playgroud)
当然,html和append函数都不会进行回调.
有人能告诉我一个人在继续之前如何正常完成等待DOM的更改?
当使用jQuery和fancybox在iframe中显示另一个页面时,我想在iframe中的页面加载时显示加载动画.使用ajax加载内容时可以这样做,但在使用iframe时我想要同样的事情.是否可以从api中获取加载动画,而iframe中的内容正在加载?
这是在fancybox中显示iframe的代码:
var $fancybox = $("#openPopup").fancybox({
'type': 'iframe',
'href': "Test.php"
});
Run Code Online (Sandbox Code Playgroud) 我有一个使用iframe调用过的表单,现在提交该表单时,我想在调用iframe的主站点中捕获响应,并根据它可以启用/禁用主页中的按钮。
请任何人帮我。
<iframe src="/demo.php" id="source"></iframe>
$('#source').delegate('*', 'hover', function() {
$(this).addClass('hover');
});
$('#source').delegate('*', 'mouseout', function() {
$(this).removeClass('hover');
});
$('#source').delegate('*', 'click', function() {
alert($(this).html());
return false;
});
Run Code Online (Sandbox Code Playgroud)
当我鼠标悬停或点击Iframe内的任何元素时,没有任何反应.Iframe位于同一个域中,我认为只要Iframe src位于同一个域上就应该有效.
关于如何使这项工作的任何想法?