gpt4 book ai didi

javascript - 无法使用 jQuery 写入动态 iframe

转载 作者:行者123 更新时间:2023-11-30 18:56:57 25 4
gpt4 key购买 nike

我的目标是动态创建一个 iframe 并使用 jQuery(例如 Google AdSense 脚本)将广告 JavaScript 写入其中。我的代码可以在 Chrome 上运行,但在 Firefox 上会间歇性地失败,即有时广告脚本运行并呈现广告,有时则不会。当它不起作用时,脚本代码本身会显示在 iframe 中。

我的猜测 是因为在我写入时 iframe 还没有准备好而发生这些间歇性故障。我已经尝试了 iframe_html 的各种迭代(我的函数名称应该等待 iframe 准备好),但没有成功。任何帮助表示赞赏!

PS:我已经阅读了各种线程(例如 jQuery .ready in a dynamically inserted iframe )。只是让每个人都知道我已经对此进行了研究,但我被困住了:)

迭代 1:

function iframe_html(html){
$('<iframe name ="myiframe" id="myiframe"/>').appendTo('#maindiv');
$('#myiframe').load(
function(){
$('#myiframe').ready( function(){
var d = $("#myiframe")[0].contentWindow.document;
d.open();
d.close();
d.write(html);
});
}
);
};

迭代 2:

function iframe_html(html){
$('<iframe id="myiframe"/>').appendTo('#maindiv').ready(
function(){
$("#myiframe").contents().get(0).write(html);
}
);
};

最佳答案

老实说,在处理 iframe 上的加载事件时,我发现的最简单和最可靠的方法是使用实​​际 iframe 标记中的“onload”属性。一旦“onload”事件触发,我在设置内容方面从来没有遇到过太大问题。这是一个例子:

<html>
<head>
<script type='text/javascript' src='jquery-1.3.2.js'></script>
<script type='text/javascript'>
$(function() {
var $iframe = $("<iframe id='myiframe' name='myiframe' src='iframe.html' onload='iframe_load()'></iframe>");
$("body").append($iframe);
});
function iframe_load() {
var doc = $("#myiframe").contents()[0];
$(doc.body).html("hi");
}
</script>
</head>
<body></body>
</html>

问题在于您必须使用属性标签和全局函数声明。如果您绝对不能拥有这些东西之一,我对此没有任何问题(尽管它看起来与您的尝试没有太大不同,所以我不确定):

<html>
<head>
<script type='text/javascript' src='jquery-1.3.2.js'></script>
<script type='text/javascript'>
$(function() {
var $iframe = $("<iframe id='myiframe' name='myiframe' src='iframe.html'></iframe>");
$iframe.load(iframe_load);
$("body").append($iframe);
});
function iframe_load() {
var doc = $("#myiframe").contents()[0];
$(doc.body).html("hi");
}
</script>
</head>
<body></body>
</html>

这是 DOM 和 JavaScript 中最令人沮丧的部分之一 - 我对你表示哀悼。如果这些都不起作用,请打开 Firebug 并告诉我错误消息是什么。

关于javascript - 无法使用 jQuery 写入动态 iframe,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1663973/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com