javascript - jQuery - 页面加载顺序(?)问题

标签 javascript jquery iframe

编辑:

修复如下,只需将高度和宽度设置为零即可隐藏 iframe:

<iframe frameborder="0" id="frm" height="0" width="0"></iframe>

var frmurl ='http://www.bbc.co.uk';

jQuery(function($){
        $('#frm').attr('src', frmurl);
        var doc = $('#frm')[0].contentDocument;
        $(doc.body).html('This text should replace the BBC website');  
});

我的网站依赖第三方系统来更新数据库中的记录并显示确认消息。通过 iFrame 访问第三方系统。我想用我自己的确认消息替换确认消息。

我使用 jQuery,并且 iFrame 工作正常,只是在第三方系统生成的确认消息覆盖它之前,我的替换文本显示得非常短暂。你可以看一个例子at this jsFiddle

如何确保我自己的文本不被覆盖?我认为这与生成页面的事件顺序有关?

<iframe frameborder="0" id="frm" scrolling="no" width="100%"></iframe>

var frmurl ='http://www.bbc.co.uk';

jQuery(function($){
        $('#frm').attr('src', frmurl);
        var doc = $('#frm')[0].contentDocument;
        $(doc.body).html('This text should replace the BBC website');   
});

最佳答案

加载 IFRAME 是异步的。您也许可以像这样做您想做的事:

jQuery(function($){
        $('#frm').attr('src', frmurl).load(function() {
            var doc = $(this)[0].contentDocument;
            $(doc.body).html('This text should replace the BBC website');
        });  
});

这将等待 IFRAME 加载,然后尝试修改它。

但是,我不确定这是否会被允许 - 您不允许操作从不同域加载的 IFRAME 的内容。

更新:

我是对的,这不起作用。我试过这个fiddle和控制台日志:

Blocked a frame with origin "http://fiddle.jshell.net" from accessing a frame with origin "http://www.bbc.co.uk". Protocols, domains, and ports must match.

你不被允许做你想做的事。

关于javascript - jQuery - 页面加载顺序(?)问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18575281/

相关文章:

javascript - 如何从一个链接打开 2 个不同的链接,一个在同一窗口中,另一个在新窗口中?

javascript - 将需要参数的匿名函数作为参数传递给另一个函数,该函数将分配给 onclick

javascript - 让 jQuery 脚本在 iframe 加载时运行一次

javascript - IE8 中 jQuery iframe 调整大小的问题

html - IFrame:无法在框架中显示此内容;添加标题后错误仍然出现

javascript - 在 firebase 身份验证中,有没有办法删除自定义声明?

javascript - 如何使用 Vue.js 在单击时更新特定的子元素?

JavaScript - 打印元素值

javascript - Bootstrap Modal 方法多次触发

javascript - 为什么这会导致最大调用堆栈错误?