我有这种问题,我有嵌入到网站页面中的视频的iframe。请注意,iframe 网址来自另一个域。有时这些网址可能会被破坏或停止工作,而不是视频,而是一条消息"此视频已从公共访问中删除。有什么方法可以通过jquery或javascript从页面中删除那些"失败"的iframe。
我在想我可以在类似的 iframe 中搜索文本 t
$("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 中理解了 afa。
另外,如果这很重要,我发现工作和损坏的 iframe 之间的区别(没有上面的文本)是最后一个不包含object
节点。
有什么方法可以解决这个问题吗?
谢谢
由于同源策略,浏览器将阻止所有 AJAX 到不同的域和直接访问不同域的iframe
。但是,有一些方法可以绕过此限制。一种方法是让服务器获取数据,然后将数据返回给客户端。这里有一个jQuery插件可以做到这一点。它使用YQL(雅虎查询语言)作为代理。
只需使用 .ajax
发出正常的 GET 请求,插件将为您处理详细信息:
$.ajax({
url: [url of the iframe],
type: "GET",
success: function(data){
$(data.responseText); //do something with it
}
});
http://jsfiddle.net/DerekL/HGHJ5/
当然,如果您不信任雅虎处理数据,您可以随时自己托管一个。