jQuery自动点击到基础元素

时间:2018-10-28 09:54:18

标签: javascript jquery click-through

我不知道这是否有可能!

但是我想自动选择外部站点上的元素。

要求是通过单击下一页以完成所有章节来完成在线培训。培训只需要访问大量的章节。由于我无权访问该网站的代码,

所以我将网站放到iframe中,并使用

将透明div放在了可点击元素区域上
  

pointer-events:none

我也可以通过

自动点击div元素
var time=5;
interval = setInterval(function() {
    time--;
    document.getElementById('Label1').innerHTML = "" + time + " seconds"
    if (time == 0) {
        // stop timer
        clearInterval(interval);
        // click
        document.getElementById('clickdiv').click();
    }
}, 1000)

但是挑战在于点击底层元素。我可以用鼠标或键盘来做。但是click()函数似乎仅适用于上面的div。问题是,为什么像鼠标或键盘这样的底层功能不能做到

HTML

<div>
    <input type='submit' id='clickdiv' value='Autoclick' onclick="document.getElementById('Label2').innerHTML = 'Clicked!'">
    <p id='Label1'> Time </p>
    <p id='Label2'> </p>
    <div style='position:relative;z-index:0'><iframe src='http://www.the-xtsernal-site.com' style='width:100%;height:100%;z-index:0'></iframe></div>
</div>

css

#clickdiv{width:50px;height:20px;border:1px solid green;position:absolute;top:57%;left:10%;z-index:100;pointer-events:none;background-color:red;color:white}
#Label1{width:50px;height:20px;border:1px solid green;position:absolute;top:77%;left:10%;z-index:100;}
#Label2{color:red;width:50px;height:20px;position:absolute;top:87%;left:10%;z-index:100;}

1 个答案:

答案 0 :(得分:0)

如果您无权访问外部站点的代码,则无法执行此操作。因此,如果是这样,请在这里停止:-)。

尽管您不能像这样单击iFrame,但可以使用postMessage向其发送命令。

基本上,您需要这样称呼它:yourIframe.postMessage("message", payload);

并在iFrame源代码中像这样处理它:

window.addEventListener("message", receiveMessage, false);

function receiveMessage(event)
{
    if (event.origin !== "http://example.org:8080")
    return;

 // ...
}