二级域名相同的情况下子页面调用父页面的js方法

  这两天项目遇到这种需求。项目是一个平台级系统,其中嵌入了多款应用。在平台上可以使用这些应用操作业务。

现在产品提出了个需求:即在A应用中需要调用js方法来打开B应用。

 

处理方法是:平台js中给出个打开B应用的方法,由应用A调用这个方法。

 

1、平台有个公用的js,在js中添加一条语句:

document.domain = "testxxx.com"; 

然后添加一个js方法,如:

function  openB(){ //do sthing.....}

 

2、A应用需要做的事情:

1、添加js:

document.domain = "testxxx.com";

2、在需要调用的位置上调用平台的openB方法来打开B应用:parent.window.openB();

注意:平台与应用之间设置的document.domain需要一样,并且平台及应用的域名都要有相同的二级域名,否则应用是调用不了平台的方法的。

 

----------------------------------------分割线----------------------------------------------

然而,以上虽然满足了需求,但方式并不是最好的。

更简单也更为方便的方法是:平台暴露一个js,若其他应用要想操作平台暴露的js方法,则只需要引用平台的js文件,然后调用平台的js方法。

现在的处理方式是:平台写个js文件,如open.js:


二级域名相同的情况下子页面调用父页面的js方法
1 document.domain = "testxxx.com";
2 var open = {
3        /*打开应用的方法*/
4        openAPP:function(B){
5            //do sth... 

             parent.window.openAPP(); //具体的方法可以写在平台公用的js文件中,这里直接引用。这样可减少暴露的细节处理
6       },
7        /*其他的方法*/    
8 
9 };        

 

二级域名相同的情况下子页面调用父页面的js方法

 应用A的操作是:

1、引用平台的open.js文件

2、调用open.js的方法:open.openAPP(B);

 

 

由此可以看出:后一种方法对于应用A来说操作更方便,只需引入js文件,调用里面的方法即可。

 

在开发的过程中,当发觉调用稍微有点麻烦时,或者代码复制粘贴超过几处了,就要考虑是否可以封装成更好的方式。

 

 

 

 

二级域名相同的情况下子页面调用父页面的js方法,布布扣,bubuko.com

二级域名相同的情况下子页面调用父页面的js方法

上一篇:jQuery中$.get、$.post、$.getJSON和$.ajax的用法


下一篇:用Silverlight开发ImageButton控件