iframe跨域訪問父框架js方法

iframe跨域訪問父框架js方法html

條件跨域

1.不在同一個主域下app

2.iframe調用父框架方法框架

 

環境說明dom

父框架有打開TAB頁方法,可是子頁面嵌入的是其餘系統頁面,一樣須要打開TAB頁。url

 

方法描述spa

原理上就是經過子頁面嵌入父框架頁面來使用調用方法code

父框架橋連頁面htm

 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方法blog

 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);

 

完成。

相關文章
相關標籤/搜索