开发者

programmatically click an input button in another web page?

I know there h开发者_如何学Pythonave been several similar questions, but I haven't seen an answer to my specific need: Is there a way to click a button in a separately launched web page? For example, I launch another web page via:

  • <a href="x" target="y"> or
  • window.open()

Can I then click an input button in that launched web page programmatically?


Unless the page is underneath your own control or resides on the same domain then no, it is not possible. This would be cross-site scripting and all browsers have security sandboxes in place to keep something like this from happening. Why are you trying to programmatically press a button on a page that you're also programmatically opening?


Yes. When you do window.open it will return you a window object. Var win = window.open(); win.fnSubmit(); assuming fnSubmit is the function on the other page that will do the.clicking. and both pqges on the same domain.


This is a technique used by some hacking injection attacks. Basically you can inject javascript into the querystring that can attach itself to the DOM, change an image or swf file source or simply run when the page is loaded; example here and example here.

Or if you already know the structure of the other page you can directly target methods or objects.

But as these are not nice things I assume that you have good reasons why you can't touch the code on the receiving page but want to adjust its behaviour?


You can click on any element you can select.

You can only select elements in windows that you have security privelages to.

You have rights to your own window, and rights to windows within the same domain & security.

To access the element you'll need the window object, which is returned from window.open

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

If you're trying to click on the Search button on www.google.com, you're SOL.


Survey says... maybe. If you've done your homework, you will probably be able to get communication to happen within the same subdomain. It gets progressively more difficult from there -- I've never had consistent cross-browser sub-domain support for manipulating JavaScript between two windows (or iframes).

That said, if they are the same domain, it is a matter of descending into it. If I have:

  • Window A opens Window B
  • Window B declares var winBVar
  • Window A is able to access winBVar after, and only after, that variable is declared (as in, you still need to wait for document.onload, etc)
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜