Chrome扩展程序:浏览和搜索iFrame

时间:2014-05-08 19:24:21

标签: javascript iframe google-chrome-extension

下午好,

我的Chrome扩展程序与页面中的iFrame交互。 iFrame加载一个数据网格,一次25个结果。有一些导航按钮可以使用下一个/上一组结果刷新iFrame。

目标是向内容脚本发送值,让内容脚本导航iFrame(通过必要的许多页面),然后将结果值发送回后台脚本。

在导航iFrame并搜索字段之前,我很难让内容脚本返回到后台脚本。

1)在browserAction上,后台脚本向内容脚本发送消息:

function resolveMulti(tabID, city){
    message.sendMessage(tabID, {
        "resolvemulti": city
    }, function(response){
        if(response["Details"]=="Property Not Found"){
            console.log('Property Not Found');
        }
        else if(response["Details"]=="No City Match Found"){
            console.log('No City Match Found');
        }
        else if(response["Details"]=="Found"){
            console.log('Found');
        }
    })
    return;
}

2)内容脚本将响应以下函数的返回:

function resolveMulti(city){

    var results = "No City Match Found";

    //If zero results
    if($("#totalProperties").html()==""){
        return "Property Not Found";
    }


    grid= document.getElementById("grid"); //<-- is iframe
    formGrid= grid.contentWindow.document.getElementById("formGrid");
    totalPages = grid.contentWindow.document.getElementById("totalPages").value;
    currentPage = grid.contentWindow.document.getElementById("currentPage").value;

    while(currentPage<totalPages&&results=="No City Match Found"){
        //code to search for results, which works on each page
        var resultsArray = $("iFrame").contents().find("#gridMain tr[id*='row'] td:nth-child(13)");
        resultsArray.each(function(index){
            if($(this).html().toLowerCase() == city.toLowerCase()){
                results = "Found";
                $(this).click();
                return false;
            }
        });

        $("#nextPageBtn").click();
    }

    return results;

}

我曾希望while循环会迭代:

  1. 搜索当前网格
  2. 如果找到,请返回结果==&#39;找到&#39;
  3. 否则,请单击“下一步”按钮
  4. 但事实并非如此。一秒钟我在第一页上,然后我在最后一页(比如说11),然后后台脚本收到一个&#34; No City Match Found&#34; - 虽然我知道结果位于第8页......

    有时出现的另一个问题是,脚本有时会在iFrame正确加载之前尝试运行(这会引发错误)。一旦加载了iFrame,脚本就会以某种方式迭代。

    我应该如何修复函数,以便函数在将结果返回到后台脚本之前正确检查每个页面?

    谢谢大家!

0 个答案:

没有答案