2

我不知道这是否可能!

但我想自动点击外部站点上的元素。

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

所以我将网站放入 iframe 并在可点击元素区域上放置一个透明 div

指针事件:无

我还能够实现自动点击我的 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;}
4

1 回答 1

0

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

虽然你不能像这样点击进入 iFrame,但你可以使用postMessage.

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

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

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

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

 // ...
}
于 2018-10-28T09:59:32.503 回答