我试图围绕jQuery包装一些代码,这些代码将不断检查页面上的元素,当该元素存在时,将一个已定义的变量附加到它。在这种情况下,我正在寻找具有唯一ID的特定div,并尝试附加定义的iframe。这就是我所拥有的。
window.myInterval = setInterval(function() {
$('#thankyou-container').append(iframehtml);
clearInterval(window.myInterval);
}
), 50);
更新:
这是我试图插入#thankyou-container但在页面加载后加载的代码。我遇到的问题是,当我刷新浏览器时,此广告代码(下方)仅在页面上加载。它很奇怪,它不会马上显示:
<script type="text/javascript">
vm_load({
"displayId": "12584",
"publisherId": "33927",
"campaign": "9380",
"maxResults": "3",
"areaofstudy":
JSON.parse(jQuery.cookie('CategorySubCategorySpecialty')).CATEGORIES[0].text.replace('Business','1').replace('Criminal Justice & Legal','3').replace('Education','5').replace('Fine Arts & Design','2').replace('Health & Medicine','8').replace('Liberal Arts & Humanities','5').replace('Math, Science & Engineering','9').replace('Public Affairs & Social Sciences','13').replace('Religious Studies','5').replace('Technology','9').replace('Vocational Training',''),
"md": "1"
});
</script>
jQuery被加载到页面上,并且在此代码之前加载了引用vm_load函数的javascript文件。
我认为我需要一些包装代码的东西,并告诉它在页面加载完成后加载。这可能是解决方案吗?
答案 0 :(得分:1)
这可以解决你的问题...
window.myInterval = setInterval(function() {
var $container = $('#thankyou-container');
if ($container.length) {
clearInterval(window.myInterval);
$container.append(iframehtml);
}
), 50);
它将检查元素是否存在。如果没有,没有任何反应。如果是,则清除间隔并进行追加。
但是,我推荐这种方法......
function containerAppend() {
var $container = $('#thankyou-container');
if ($container.length) {
$container.append(iframehtml);
}
else {
setTimeout(containerAppend, 50);
}
}
containerAppend();
它有点复杂,但它使用超时而不是间隔,以便考虑任何需要时间的事情。使用原始方法,您可以发现元素搜索时间超过50毫秒,这可能会导致问题。