我有一个跨域网站的iframe.我想读取iframe的DOM,我认为这是可能的,因为使用检查器,我甚至可以修改iframe的DOM.然而,我试图阅读它的每一种方式,我都遇到了相同的原始政策.我想要的只是从iframe加载到我的本地DOM中的内容.我以为它会那么简单$(document.body).find('iframe').html(),但那会返回空字符串.
我真的希望有一种方法可以做到这一点,因为我过去几天一直在做的工作是基于这种可行性.
谢谢
我正在为此站点(Site1)中的页面编写Greasemonkey脚本.Site1有各种交易和优惠,我的GM脚本旨在执行以下操作:
当访问Site1上的商品时,脚本会查询 Site2以查明该商店是否也列在Site2上.如果是这样,请在Site1上显示Site2的搜索结果.
问题是Site2显示进度条("加载结果"),然后显示结果.因此,我的Ajax请求总是返回空结果,看起来像这样(参见红色框部分):(
点击查看大图)
但是,它实际上应该具有Site2搜索结果的完整内容,如下所示:(
点击查看大图)
我尝试过同步Ajax请求GM_xmlhttpRequest,但无济于事.
这是Site 2的问题进度条:(
点击查看大图)
在将响应返回到Site1之前,如何让AJAX请求等待Site2上的搜索完全呈现?
作为参考,我的完整工作脚本代码位于pastebin.com.
这是相关的片段:
$(document).ready(function(){
var rewardsSiteResults = $('<div class="panel deal-panel rc-lr"></div>').attr('id', "rewardsSiteResults")
.html("<p>" + progressMessageText + "</p> ").append(spinnerGif);
$(insertSelector).after(rewardsSiteResults);
var addressMap = getAddressOfHotel();
var pinCode = addressMap[pinCodePlaceHolder];
var hotelName = addressMap[hotelNamePlaceHolder];
var queryURL = constructQueryURL(pinCode, hotelName);
$.ajaxSetup({async:true, timeout: 5000});
$.get(queryURL,null, function(response) {
if(!displayed){
displayed=true;
//rewardsSiteResults.html("adfaasddsf");
var text = $(response).find("#col2");
$(text).find("script").remove();
//console.log(text.html())
// $('<iframe id="someId"/>').appendTo('#rewardsSiteResults')
// .contents().find('body').append(response);
rewardsSiteResults.html("<div class='panel deal-panel rc-lr'>" …Run Code Online (Sandbox Code Playgroud) 我有这个<iFrame>[name ="data"],页面显示一个<span>,id ="weergave_percentage".我希望将该范围内的数字转换为javascript函数.我目前做了这个,但它返回:null
var percentage = window.frames['data'].document.getElementById('weergave_percentage');
alert(percentage);
Run Code Online (Sandbox Code Playgroud)
我做错了什么,我怎么能做我想做的事?
注意:包含数据的范围仅包含数字(浮点数),并且不包含任何其他类型的HTML格式.另外,我在iFrame的代码之后添加了一段javascript,以确保在我尝试从iFrame获取数据时加载了iFrame.此外,iFrame的src与主页面位于同一个域中.