因此,我制作一个小部件,从客户端提取一些文本,将其发送回服务器进行处理,并将iframe嵌入到客户端。但是,如果出现任何错误,我的客户希望我完全隐藏/移除iframe,而不是生成自定义错误页面。我想知道什么是实现这一目标的最佳方法。下面是我给到客户端的脚本:在内部服务器错误的情况下隐藏iframe
<script type="text/javascript">
$(document).ready(function(){
if($(".single-post").length===1)
{
heading =$('.post h2').text();
heading =heading.trim();
link = $('.post h2 a').attr('href');
date = $('.post .meta .timr').text()
if($('div .entry p').text()!="")
para_full = $('div .entry p').text()
total_length = para_full.length;
if (total_length<3000)
{
text_send = para_full;
}
else{
tsstart = (total_length/2) - 250;
tsend = (total_length/2) + 250;
text_send = para_full.substring(tsstart,tsend);
}
if($('div .entry img')[0].src !="" && $('div .entry img')[0].src != "undefined")
image_url = $('div .entry img')[0].src
if($('h3#comments').text()!="" && $('h3#comments').text()!="undefined")
{
no_of_comments = $('h3#comments').text()
l = no_of_comments.indexOf('Responses');
no_of_comments = no_of_comments.substring(0,l-1)
}
else
{
no_of_comments=0;
}
$(".client_site_iframe").attr("src","http://mydomain.com/query?"+"&searchtext="+text_send+"&link="+link+"&imagelink="+image_url+"&heading="+heading+"&date="+date+"&full_text="+para_full);
}
})
</script>
<div class="client_site_container">
<iframe class="client_site_iframe" id="mysite_iframe" width="650px" height="205px" frameborder="no" scrolling="no"></iframe>
</div>
一个,我试图解决的是写一个错误处理功能
myHandler = function(error) {
document.getElementById('client_site_iframe').style.display = 'none';
}
将被触发以下条件
<script>
if ($("#client_site_iframe html body").text().length === '')
{myHandler();}
</script>
但由于相同的原产地策略,这并不起作用。事实上,我无法访问在客户端使用jQuery在iframe中生成的任何HTML元素。我想知道是否有更好的方法来实现这一点,我很新的客户端脚本,所以我不知道这个问题是否可以解决或有人推荐使用AJAX请求,但我不知道如何这将帮助我解决跨产地政策。
tl; dr - 当有可能时,最好使用ajax而不是iframe,https://api.jquery.com/jQuery.get/。 *编辑:在你的情况下不可能,因为它会触发一个跨源异常* – TastySpaceApple
iframe的内容是从另一个域?对此有所了解。 – Jai
对......罗杰。编辑。 – TastySpaceApple