Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/409.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 与KRL&;AJAX_Javascript_Ajax_Krl - Fatal编程技术网

Javascript 与KRL&;AJAX

Javascript 与KRL&;AJAX,javascript,ajax,krl,Javascript,Ajax,Krl,我在这里会说得很具体。如果您转到并执行搜索,并在地图视图中查看结果,则地图上到处都是绘图,右侧还有列表。如果你点击地图上的一个pin,你会看到一个弹出窗口,然后点击MLS,你会看到另一个带有属性描述的弹出窗口。您还可以单击右侧列表上的MLS编号,打开属性描述弹出窗口 我想在弹出窗口的html中添加一个按钮。我可以很好地插入html,但问题是,如何确定属性描述何时加载,以便读取其中的html并添加按钮 截图: 简短回答(我稍后会编辑): 使用该操作可监视选择器 然后,使用选择时间。我使用了一个

我在这里会说得很具体。如果您转到并执行搜索,并在地图视图中查看结果,则地图上到处都是绘图,右侧还有列表。如果你点击地图上的一个pin,你会看到一个弹出窗口,然后点击MLS,你会看到另一个带有属性描述的弹出窗口。您还可以单击右侧列表上的MLS编号,打开属性描述弹出窗口

我想在弹出窗口的html中添加一个按钮。我可以很好地插入html,但问题是,如何确定属性描述何时加载,以便读取其中的html并添加按钮

截图:

简短回答(我稍后会编辑):

使用该操作可监视选择器


然后,使用选择时间。

我使用了一个技巧,在用户单击之前,您不会查找元素。真正棘手的是,地图上卡片上显示的MLS编号链接阻止了点击事件向窗口的传播,因此我无法使用实时点击绑定

我真的病了,所以我不能再熬夜了,但代码注释得相当好,所以你应该能够读懂我的疯狂

规则集a60x561{
元{
名称“utahrealestate”
说明>
作者“迈克·格雷斯”
注销
}
派遣{
域名“utahrealestate.com”
}
规则搜索\u查找\u不动产{
当网页浏览“\/search\/”时选择
前{
}
{
通知(“标题”、“内容”),粘性=真;
发射0)&($cardMls.is(“:可见”)){
控制台日志(“hevercard上的foud mls”);
//注意点击卡上的mls编号
$cardMls.单击(函数(){
log(“mls单击地图pin上方的悬停卡”);
//得到报告!!!
KOBJ.a60x561.getReport();
});
}否则{
setTimeout(函数(){
KOBJ.a60x561.grabMls();
}, 500);
};
};
//抓取房地产清单详细信息,一旦它加载到厚框中
KOBJ.a60x561.getReport=函数(){
如果($K(“#公共报告包装”)。长度>0){
log(“找到列表详细信息!”);
}否则{
setTimeout(函数(){
KOBJ.a60x561.getReport();
}, 500);
};
};
|>;
}
}
}
测试应用程序时firebug控制台的屏幕截图


这比乍一看要复杂一些。有两个方面使得你正在尝试做的事情有点棘手,所以我现在正在研究一个答案。有不同的地图视图。您是如何获得要首先处理的地图视图的?你能发布你所说的特定地图视图的截图吗?截图正是我所指的。谢谢你发布它们。我不确定是否有不同的地图视图。我只是在搜索“阿尔卑斯山,UT”,在地图视图中查看结果。如果执行列表视图并单击view属性,它将为该属性加载一个页面,我将在其中插入一个按钮。这只是一个厚框视图,我不知道如何知道它何时被完全加载以触发js函数。这非常有效。有一个问题,当你点击了一个pin,而一个悬停卡已经打开,所以我做了一个小的修改。除此之外,完美!好极了!是的,我忘了测试那个用例。很高兴我能帮忙。
ruleset a60x561 {
  meta {
    name "utahrealestate"
    description <<
      utahrealestate
    >>
    author "Mike Grace"
    logging off
  }

  dispatch {
    domain "utahrealestate.com"
  }

  rule search_for_realestate {
    select when web pageview "\/search\/"
    pre {

    }
    {
      notify("title","content") with sticky = true;
      emit <|
        // sidebar click watching easy
        // click event isn't being blocked so we can use .live and not 
        // worry about HTML being present at time of event listener binding
        $K(".full_line a").live("click", function() {
          console.log("sidebar mls clicked");
          // get the report!!!
          KOBJ.a60x561.getReport();
        });

        // pin on map mls number is a bit harder because click event is 
        // being blocked from propegating to the window
        // to get around this we can
        // 1) watch for click on pin
        // 2) wait for mls element to load
        // 3) attatch our own element level event listener
        $K("#mapdiv_OpenLayers_Container image").click(function() {
          console.log("pin on map clicked");
          // attatch click event listener on mls element once it loads
          setTimeout(function() {
            KOBJ.a60x561.grabMls();
          }, 500);
        });  

        // ATATCH LISTENER TO MLS NUM ON MAP
        KOBJ.a60x561.grabMls = function() {
          console.log("looking for mls in hovercard");

          // grab jQuery reference to element we are looking for
          var $cardMls = $K("#property-overview a:first");

          // only go on if it's on the page and visible
          if ( ($cardMls.length > 0) && ($cardMls.is(":visible")) ) {

            console.log("foud mls on hevercard");

            // watch for click on mls num on card
            $cardMls.click(function() {
              console.log("mls clicked on hovercard above map pin");
              // get the report!!!
              KOBJ.a60x561.getReport();
            });
          } else {
            setTimeout(function() {
              KOBJ.a60x561.grabMls();
            }, 500);
          };
        };

        // GRAB REALESTATE LISTING DETAILS ONCE IT LOADS IN THICK BOX
        KOBJ.a60x561.getReport = function() {
          if ($K("#public-report-wrap").length > 0) {
            console.log("Listing details found!");
          } else {
            setTimeout(function() {
              KOBJ.a60x561.getReport();
            }, 500);
          };
        };
      |>;
    }
  }
}