1

编辑:

修复如下,只需将高度和宽度设置为零即可隐藏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 正常工作,只是在第三方系统生成的确认消息覆盖它之前,我的替换文本显示非常短暂。你可以在这个 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');   
});
4

2 回答 2

1

加载 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 的内容。

更新:

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

阻止具有 origin"http://fiddle.jshell.net"的框架访问具有 origin 的框架"http://www.bbc.co.uk"。协议、域和端口必须匹配。

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

于 2013-09-02T14:22:12.967 回答
0

更新<iframe>“src”属性基本上是一个明确的请求,即浏览器使用从给定 URL 获取的内容更新框架。因此,要求浏览器既这样做又不这样做是没有意义的:)

但是,您可以做的是将您的消息放在其他地方,而不是放在<iframe>. 无论是否可见,HTTP 事务都将起作用<iframe>,因此,如果您不希望您的用户看到结果,您可以隐藏<iframe>via CSS 或其他方式。

于 2013-09-02T14:58:01.627 回答