window.oopener.document.getElementById(按钮的ID).click()导致chrom

window.opener.document.getElementById(ID of Button).click() results in javascript error in chrome

本文关键字:click 导致 chrom ID 按钮 oopener document getElementById window      更新时间:2023-09-26

Google chrome给出了此javascript错误

Uncaught TypeError: Object javascript:__doPostBack('ctl00$MainContentPlaceHolder$lnkBtnHidden','') has no method 'click'

执行该行时

window.opener.document.getElementById('ctl00_MainContentPlaceHolder_lnkBtnHidden').click();

我已经验证了控件在打开页中,并且按钮的ID也相同,但window.opener.document.getElementById('ctl00_MainContentPlaceHolder_lnkBtnHidden')返回的是这个,而不是一个对象:

javascript:__doPostBack('ctl00$MainContentPlaceHolder$lnkBtnHidden','')

这种情况只在Chrome中发生。。。

编辑:用于打开窗口的代码如下:

win= window.open('/PageName.aspx?qs=qsValue','','scrollbars=1,width=1000,height=950');
win.moveTo(0,0);

不要被返回的混淆

javascript:__doPostBack('ctl00$MainContentPlaceHolder$lnkBtnHidden','')

一些浏览器使用超链接的href属性作为<a/&gt-要素返回的对象仍然是元素对象。

我已经在评论中写道,(我的)Chrome中的click()不适用于a元素。它在input[type=submit]中对我有效,但可能你的chrome版本不支持它。但这并不重要,只要你不能依赖click()在任何地方都有效。

当您使用dispatchEvent()的方法不起作用时,我想您的实现是错误的,这里有一个示例函数:

//@param obj element where to simulate the click
function simclick(obj)
{
  if(document.fireEvent) {
    obj.fireEvent("onclick"); 
    }
   else if(document.dispatchEvent) { 
    var oEvent = document.createEvent( "MouseEvents" );
    oEvent.initMouseEvent("click", true, true,window, 1, 1, 1, 1, 1, false, false, false, false, 0, obj);
    obj.dispatchEvent( oEvent );
    } 
}

还有什么:您应该将javascript:__doPostBack()的调用从href属性移动到onclick属性。否则,无法保证函数会被调用(具体取决于浏览器)。

请参见示例:http://fiddle.jshell.net/doktormolle/swR59/show/
开启器来源:http://jsfiddle.net/doktormolle/swR59/
弹出源:http://jsfiddle.net/doktormolle/vHwCr/