我使用内联语法向帧添加事件:
<FRAME SRC="s.htm" NAME="WINCONTENT" onload="alert( this )">
这有效(=每当加载新网址时都会触发事件),
除了我更喜欢使用注册事件
addEventListener
/ attachEvent
。
现在 - 在onload="alert( this )
示例this
中设置为HTMLFrameElement。
如何从JavaScript内部访问HTMLFrameElement?
(我需要将其指定为addEventListener
/ attachEvent
)
请注意parent.WINCONTENT
等指向Window对象
而我需要的是HTMLFrameElement。
我用谷歌搜索了一段时间,但显然帧已经不合时宜了。
完整列表如下:
的index.htm
<HTML>
<HEAD>
<TITLE>WINMAIN</TITLE>
</HEAD>
<FRAMESET COLS=255,*>
<FRAME SRC="frm_navi.htm" NAME="WINNAVI">
<FRAME SRC="s.htm" NAME="WINCONTENT" ID="WINCONTENT">
</FRAMESET>
</HTML>
frm_navi.htm
<HTML>
<HEAD>
<TITLE>Navigation Pane</TITLE>
</HEAD>
<BODY>
<SCRIPT LANGUAGE="JavaScript" SRC="dom.js"></SCRIPT>
</BODY>
</HTML>
s.htm
<HTML>
<HEAD>
<TITLE>CONTENTS</TITLE>
</HEAD>
<BODY>
<P><A HREF="r.htm">r.htm</A></P>
<P><DIV ID="test">Click me, the event handler was registered in JavaScript</DIV></P>
</BODY>
</HTML>
r.htm
<HTML>
<HEAD>
<TITLE>CONTENTS</TITLE>
</HEAD>
<BODY>
<P>This file s.htm</P>
</BODY>
</HTML>
dom.js
function register_event ( _target, _ename, _func ) {
if( ! _target ) {
return false;
}
// Required for accessing <this> inside the event handling function.
_target[_func] = _func;
if ( _target.addEventListener ) {
_target.addEventListener(
_ename,
function(e) { _target[_func](e);},
false
);
}
else if ( _target.attachEvent ) {
_target.attachEvent(
"on" + _ename,
function(e) { _target[_func](e);}
);
}
else {
return false;
}
return true;
};
function handle_event ( ) {
alert( "Event handler registered in JS." );
};
register_event( parent.WINCONTENT.document.getElementById( "test" ) , "click", handle_event );
register_event( "_what_do_i_enter_here_ ???", "load", handle_event );
答案 0 :(得分:0)
您是否只能为frame
元素分配ID并使用document.getElementsById
(来自父文档)?