【发布时间】:2017-05-06 15:52:20
【问题描述】:
大家好。
我正在处理一个项目,其中有一个应用程序的其中一个视图使用 iframe 实现,当用户单击某些“父”文档时,iframe src 会更改。所以基本上总是有相同的容器,但是 iframe 的内容会根据用户的选择而改变。 假设会有:
parent.html(包含所有 js 逻辑)
child1.html
child2.html
...
每个“子”页面都是没有(或很少)javascript 的html 页面。我想要获得的是,当用户到达 child1.html 时,只执行每个孩子的全局代码,当然还有与该页面相关的代码。 假设在 child1.html 上必须执行几个 ajax 调用,然后是一些 js 来处理表,诸如此类。而在 child2.html 上会有一些带有自己验证的表单,以及另一个 ajax 调用来发送表单(显示在 child1.html 上)。
在 parent.html 上会有一个很大的 js 库,其中包含每个子页面的 js 代码,所以我想要一种方法来“知道”我在哪个页面并只执行部分与该页面相关的代码。
结构应该是这样的:
var myGlobalObject = {username:undefined,foo:1}
if(childpage1.html){
if (myGlobalObject.username == undefined){
$.ajax(retrieve username);
$("#someTableIniFrame",iframeContext).doSomething();
}
}
if(childpage2.html){
$("body",iframeContext2).on("submit","#someFormOnChild2", function(){
//do something
});
}
和/或子页面上只能执行其代码的内容...例如:
document.addEventListener("DOMContentLoaded", function(event) {
//execute only my part of the global js!
});
我希望已经清楚我想要获得什么:
一个父页面,包含子页面中使用的所有 js,按需执行或能够了解我们在哪个页面中。
几个没有或只有很少 js 的子页面。
仅供参考,iframe src 会被父页面上的 js 改变,通过销毁前一个并添加一个带有新源的新 iframe。
【问题讨论】:
-
您是否尝试在正在加载的页面上添加 javascript 代码?
-
我实际上处于评估阶段,我正在尝试弄清楚如何组织它,因为子页面会很多。
-
此刻我正在研究如何在父级上“包装”js函数,所以从子级我只能调用我需要的部分。
-
好吧,既然你想做到最好,你只需要在子页面中使用
-
不,这些页面上必须有 NO 或 VERY LITTLE js,这是强制性的。
标签: javascript jquery html ajax iframe