我遇到了这种问题,我的网页上嵌入了嵌入视频的iframe。请注意,iframe网址来自另一个域。这些网址可能会不时被破坏或停止工作,而不是视频,而是有一条消息“此视频已从公共访问中移除。”。有什么方法可以通过jquery或javascript从页面中删除那些“失败的”iframe。
我原以为我能够在类似t
的iframe中搜索文字$("iframe").each(function() {
var val = $(this).is(':contains("video has been")');
console.log(val); // returns false
});
然后删除它们,但它返回false,我从http://en.wikipedia.org/wiki/Same-origin_policy了解到它。
另外,如果重要的话,我发现工作和损坏的iframe之间的差异(没有上述文本)是最后一个不包含object
节点。
有没有办法解决这个问题?
由于
答案 0 :(得分:1)
由于同源策略,浏览器会阻止所有AJAX到不同的域并直接访问不同域的iframe
。但是,有办法绕过这个限制。一种方法是让服务器获取数据,然后将数据返回给客户端。 Here是jQuery的一个插件,可以执行此操作。它使用YQL(Yahoo Query Language)作为代理。
只需使用.ajax
发出正常的GET请求,插件就会为您处理详细信息:
$.ajax({
url: [url of the iframe],
type: "GET",
success: function(data){
$(data.responseText); //do something with it
}
});
http://jsfiddle.net/DerekL/HGHJ5/
当然,如果您不相信雅虎处理数据,您可以自己主持一个。