iframe跨域访问父框架js方法

iframe跨域访问父框架js方法

条件

1.不在同一个主域下

2.iframe调用父框架方法

环境说明

父框架有打开TAB页方法,但是子页面嵌入的是其他系统页面,同样需要打开TAB页。

方法描述

原理上就是通过子页面嵌入父框架页面来使用调用方法

父框架桥连页面

 1 @{
 2     ViewBag.Title = "跨域桥连";
 3     Layout = "~/Views/Shared/_LayoutCenter.cshtml";
 4 }
 5 
 6 @section Scripts{
 7 <script>
 8     parent.parent.DomainAddtabs("@ViewBag.Url", "@ViewBag.Name"); // execute main function
 9 </script>
10 }

子系统js方法

 1 /*
 2  跨域问题
 3 */
 4 ; (function ($) {
 5     $.extend({
 6         sendDomain: function (opt, callback) {
 7             var defaults = {
 8                 wmsUrl: '#',
 9                 icon: 'icon-house_in', //图标
10                 title:'title',
11                 sapUrl: '#'
12             };
13             var opts = $.extend(defaults, opt);
14 
15             try {
16                 var parent = window.parent;
17                 var url = opts.wmsUrl;
18                 var icon = "icon " + opts.icon;
19                 window.parent.addTab(opts.title, url, icon);
20             } catch (e) {
21                 var url = opts.wmsUrl;
22                 $.execMain(url, opts.title, opts.sapUrl);
23             }
24             if (callback) {
25                 callback();
26             }
27         },
28         // exec main function
29         execMain: function (url, name, mainUrl) {
30             if (typeof (exec_obj) == 'undefined') {
31                 exec_obj = document.createElement('iframe');
32                 exec_obj.name = 'tmp_frame';
33                 exec_obj.src = mainUrl + '?url=' + url + '&name=' + name;
34                 exec_obj.style.display = 'none';
35                 document.body.appendChild(exec_obj);
36             } else {
37                 exec_obj.src = mainUrl + '?url=' + url + '&name=' + name + '&' + Math.random();
38             }
39         }
40     });
41 })(jQuery);

完成。

原文地址:https://www.cnblogs.com/wrhming/p/6084910.html