【发布时间】:2017-09-07 18:33:28
【问题描述】:
我有一个包含 .asp 经典页面的框架集和一个包含 .aspx 页面的框架集。我想使用 JavaScript 从“顶部框架”访问“菜单框架”中的 .aspx 函数和变量。当“菜单框架”中有一个.asp 时,您只需引用:self.menu.someVariable 或top.menu.someFunction()。这些现在在 .aspx 的 JavaScript 中不可用。
如何从另一个框架中的 .asp 引用 .aspx 中的函数和变量?
在index.asp中,顶层:
<frameset id="colSet" >
<noframes>
</noframes>
<frame id="menu" name="menu" src="idx_menu.aspx">
<frameset id="rowSet" >
<frame name="header" src="idx_header.asp">
<frame name="command" src="idx_command.asp">
<frame name="main" src="default.asp" >
<frame name="message" src="idx_message.asp">
</frameset>
</frameset>
顶部框架中的 JavaScript,index.asp。这是由 onload 事件上的 idx_menu.aspx 调用的,因此在调用它们时会加载文档:
function menuLoaded() {
self.menu.idxDisplayMenu(''); // error with undefined
top.menu.idxDisplayMenu(''); // same error
top.menu.swfVersion = '5'; // also an error
}
菜单框架中的JavaScript,idx_menu.aspx:
var swfVersion = '';
function pageLoaded() {
top.menuLoaded();
}
function idxDisplayMenu(message) {
alert(message);
}
.aspx 与本示例中的旧 idx_menu.asp 代码相同。
【问题讨论】:
-
这两个页面是否来自不同的域?我真的不认为“asp”与“aspx”是这里的重要因素。 “那些现在在 JavaScript 中不可用” - 你到底是什么意思?当你尝试这样做时发生了什么?
-
同一个域,我也没有看到两者不同。但是顶部框架中的代码调用了与以前相同的函数。只是菜单页从.asp 变成了.aspx(函数和变量和以前一样)。 “不可用”只是意味着当我像过去那样引用“那些”函数或变量时,结果是“未定义”。
-
我想我们需要看看一些实际的代码。
-
用代码示例编辑。只是试图将 idx_menu.asp 升级到 .aspx,所以代码基本相同......就这个问题而言。
标签: javascript asp.net asp-classic frames