如何单击弹出窗口上的按钮

时间:2015-04-20 20:19:51

标签: javascript jquery

我的第一页上有按钮。

<button id="btm" onclick="window.open('page.htm', '_blank', 'toolbar=yes, scrollbars=yes, resizable=yes, top=500, left=500, width=400, height=400')">Button1</button>

我有另一个page.htm,下面是html

<button id="testbtn" onclick="window.open('http://www.ivikashjha.com', '_blank', 'toolbar=yes, scrollbars=yes, resizable=yes, top=500, left=500, width=400, height=400')">Button2</button>

我想在第一个按钮点击本身打开网站ivikasjha.com。 实际上我想访问主父页面上弹出页面的控件。

1 个答案:

答案 0 :(得分:1)

相同域名

浏览器内测试(Firefox 35)似乎表明,如果打开的窗口位于同一个域内,则该页面具有一些访问权限

var child = window.open( 'http://example.com' )
child.localStorage.setItem( 'hello', 'there' ) // Sets correctly
child.$( 'body' ).css( 'background', 'blue' ) // Access denied to '$'

不同的域名

然而,跨域测试似乎限制了locationparentpostMessage和其他几个人的可用界面

var child = window.open( 'http://other-domain.com' )
child.localStorage // cannot access

window.postMessage可供您使用。在两个标签之间来回发送消息并不是最简单的方法,但至少你可以告诉弹出窗口点击它自己的按钮。

如果失败,那么在后台打开共享websocket并以这种方式进行通信的两个页面都没有限制。

外卖

在标签之间传播功能的最简单方法似乎是留言:

//Parent page
var childUrl = 'http://hello.example.com' )
var child = open( childUrl )
child.postMessage( 'click-button', childUrl )

//Child page
window.addEventListener( 'message', function( event ){
  if( event.data === 'click-button' ){
    $( '#my-button' ).click()
  }
}, false )