以编程方式单击另一个网页中的输入按钮

programmatically click an input button in another web page?

本文关键字:输入 按钮 网页 另一个 编程 方式 单击      更新时间:2023-09-26

我知道有几个类似的问题,但我还没有看到我的具体需求的答案:有没有一种方法来点击一个按钮在一个单独启动的网页?例如,我通过

启动另一个网页:
  • <a href="x" target="y">
  • window.open()

然后我可以在启动的网页中以编程方式点击输入按钮吗?

除非页面在您自己的控制之下或驻留在同一域中,否则不可能。这将是跨站点脚本,所有浏览器都有适当的安全沙箱来防止类似的事情发生。为什么你要用编程的方式按下一个页面上的按钮,而你也要用编程的方式打开这个页面?

是。当你做窗户的时候。打开它会返回一个窗口对象。Var win = window.open();win.fnSubmit ();假设fnSubmit是另一个页面上执行.click操作的函数。

这是一些黑客注入攻击所使用的技术。基本上,你可以将javascript注入querystring,它可以将自己附加到DOM,更改图像或swf文件源,或者只是在加载页面时运行;这里有例子,这里也有例子。

或者,如果你已经知道其他页面的结构,你可以直接针对方法或对象。

但是因为这些都不是好的事情,我假设你有很好的理由为什么你不能触摸接收页面上的代码,但想要调整它的行为?

你可以点击任何你可以选择的元素

你只能在你有安全权限的窗口中选择元素。

您有权使用自己的窗口,也有权使用同一域内的窗口&安全。

要访问元素,你需要窗口对象,这是从window.open

返回的
var newWin = window.open(siteYouHaveAccessTo);
newWin.document.getElementById('foo').click();

如果你试图点击www.google.com上的Search按钮,你是SOL。

调查显示…也许吧。如果您做了功课,您可能能够在同一子域中进行通信。它从那里变得越来越困难——我从来没有一致的跨浏览器子域支持在两个窗口(或iframes)之间操作JavaScript。

也就是说,如果它们是相同的域,这是一个下降到它的问题。如果我有:

  • 窗口A打开窗口B
  • 窗口B声明var winBVar
  • 窗口A能够访问winBVar之后,只有在该变量被声明之后(如,您仍然需要等待文档)。onload等)