我不知道这是否有可能!
但是我想自动选择外部站点上的元素。
要求是通过单击下一页以完成所有章节来完成在线培训。培训只需要访问大量的章节。由于我无权访问该网站的代码,
所以我将网站放到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;}
答案 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;
// ...
}