window.opener.document.getElementById(按钮的ID)。click()会导致chrome中的javascript错误
Google chrome给出了这个javascript错误window.opener.document.getElementById(按钮的ID)。click()会导致chrome中的javascript错误,javascript,google-chrome,Javascript,Google Chrome,Google chrome给出了这个javascript错误 Uncaught TypeError: Object javascript:__doPostBack('ctl00$MainContentPlaceHolder$lnkBtnHidden','') has no method 'click' 在执行这一行时 window.opener.document.getElementById('ctl00_MainContentPlaceHolder_lnkBtnHidden').click(
Uncaught TypeError: Object javascript:__doPostBack('ctl00$MainContentPlaceHolder$lnkBtnHidden','') has no method 'click'
在执行这一行时
window.opener.document.getElementById('ctl00_MainContentPlaceHolder_lnkBtnHidden').click();
我已经验证了该控件是否在opener页面中,并且按钮的ID也相同,但是window.opener.document.getElementById('ctl00\u MainContentPlaceHolder\u 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','') 还有:您应该将
javascript:\uu doPostBack()
的调用从href属性移动到onclick属性。否则,无法保证调用该函数(取决于浏览器)
请参见示例:开场白来源:
弹出源:什么样的元素(标记名)是“控件”这基本上是一个
锚点
控件,但我也用input type=submit
尝试过,结果相同。在Chrome中,click()不适用于锚点,但应该适用于输入。但是,click方法在任何元素上都不可信。请改为尝试fireevent(IE)和dispatchEvent(其他)。将其更改为dispatchEvent('onClick')
后,会出现以下错误未捕获错误:未指定的\u事件\u类型\u错误:DOM事件
。我认为问题是因为javascript没有返回window.opener.document.getElementById('ctl00\u MainContentPlaceHolder\u lnkBtnHidden')的对象。
我接受你的答案,因为这是正确的解决方案,但请将if语句更改为if(document.firevent)
因为Internet Explorer(第9版)识别fireEvent
和dispatchEvent
,但不使用dispatchEvent
触发事件,因此else将自动用于chrome。。。
//@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 );
}
}