gpt4 book ai didi

javascript - 带有框架的 jQuery getScript 函数

转载 作者:行者123 更新时间:2023-11-28 10:31:41 25 4
gpt4 key购买 nike

我是 Javascript/Jquery 编程的新手,所以如果这是一个简单/愚蠢的问题,我深表歉意。

我正在尝试使用 jQuery .getScript() 函数刷新现有网页的一部分。该网页必须在本地文件系统上运行,并且大量的格式化是使用框架完成的。

现在,有三个主要框架 - 一个显示可能的“范围”以供选择的侧边栏,一个显示网页大部分内容的主框架,以及一个页脚框架。页面的主要入口位于index.html 文件中,该文件将sidebar.html、main.html 和footer.html 文件加载到每个相应的框架中。

反过来,main.html 有许多要加载的 javascript 文件,其中 main 是 main.js,其中包含许多用于格式化/处理此主窗口内容的函数。加载此 javascript 文件后,main.html 加载一些 javascript 文件,其中包含将在主框架中显示的数据。这些加载的文件具有固定的数据结构,并且依赖于main.js文件加载的函数。

现在加载网页工作正常,但是当用户尝试切换到另一个“范围”时,整个网页将重新加载以进行切换。网页中唯一的区别是 main.js 框架中的内容,由一组不同的 .js 文件加载。

文字已经足够了,让我们看一些代码。

加载网页时,我尝试在 .js 文件中的 index.html 级别添加对 getScript 函数的简单调用,以处理切换范围。这个文件 newFile 与之前在 main.html 文件中加载的 oldFile.js 具有不同的数据定义。

$.getScript(/js/newFile.js);

但是这不起作用,因为 newFile.js 依赖于 main.js 中的 parseData() 函数。

如果我打开 firebug,parseData 不在 dom 选项卡中,我认为这与不同框架中存在的 main.html 和 main.js 文件的一些范围问题有关。

我尝试对正确的“框架”进行一些定位,但我认为我对 jQuery 的了解还不够,无法知道发生了什么。

$(window.parent.frames[0]).getScript(/js/newFile.js);

有什么建议吗?

如果我在 firebug 控制台中输入“parseData”,它找不到它:“ReferenceError:parseData 未定义”

但是,如果我输入 window.parent.frames[1].parseData,它就可以找到该函数。

对 JavaScript 的所有杂乱和理解不佳表示抱歉。希望有人能提供一些帮助!

谢谢

最佳答案

.getScript() 在全局上下文中执行加载的脚本。我假设由于您的 parseData() 函数在全局范围内不可用。您可以尝试通过将 parseData 包装在 jQuery.globalEval() 调用中来全局定义 parseData,如下所示:

$.globalEval("
function parseData(){
alert('It works!');
}
");

我还没有测试过,但我使用 javascript setTimeout() 函数遇到了类似的情况,因为它也在全局执行。

关于javascript - 带有框架的 jQuery getScript 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2884693/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com