【问题标题】:How access variables/functions in .aspx frame from .asp classic frame with JavaScript如何使用 JavaScript 从 .asp 经典框架访问 .aspx 框架中的变量/函数
【发布时间】: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


【解决方案1】:

嗯...我觉得自己很愚蠢! JavaScript 在 .js 文件中,虽然我可以在调试器中看到代码,但由于某种原因它没有到达它。我使用了以下代码并且代码有效:

<script src="<%=ResolveUrl("~/include/scripts.js")%>" type="text/javascript"></script>

我之前没有使用 ResolveUrl 并对位置进行硬编码。

【讨论】:

    猜你喜欢
    • 2010-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-21
    • 1970-01-01
    • 2016-08-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多