<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          FrameController.js單頁多框架窗口管理

          聯(lián)合創(chuàng)作 · 2023-09-22 02:35

          項(xiàng)目介紹

          優(yōu)雅的處理單頁多框架(<iframe>)窗口管理同步問題

          消息數(shù)據(jù)結(jié)構(gòu)

          {
              event: '事件名稱',
              type: 'child',
              target: '內(nèi)嵌頁的window',
              data: '傳遞的數(shù)據(jù),即FrameController.broadcast(event, data)的data',
              frameId: '內(nèi)嵌頁標(biāo)志'
          }

          使用說明

          1、點(diǎn)擊發(fā)送通知,所有打開的內(nèi)嵌頁都會受到通知。

          基礎(chǔ)事件

          var addLog = function(from, event, data) {
              var _old = $('#log').html().substring(0, 3000);
              $('#log').html(
                  (logTpl + _old)
                  .replace('#EVENT#', event)
                  .replace('#DATA#', JSON.stringify(data))
                  .replace('#SOURCE#', from)
              );
              console.log('event:', event, 'data:', data);
          };
           
          //同步通知
          FrameController.addListener('broadcast', function(e) {
              $('#msg').val(e.data.msg);
              addLog(e.frameId, e.event, e.data);
          });
           
          //發(fā)送廣播
          $('#send').click(function() {
              var nums = FrameController.broadcast('broadcast', {
                  msg: $('#msg').val()
              });
              $('#log').html('通知成功:' + nums + '\n\n' + $('#log').html());
          });
           
          //更新輸入狀態(tài)
          $('#msg').change(function() {
              FrameController.broadcast('change', {
                  text: '輸入框內(nèi)容已更改:' + $(this).val()
              });
          });
           
          //更新狀態(tài)
          FrameController.addListener('change', function(e) {
              addLog(e.frameId, e.event, e.data);
          });

          2、新增 內(nèi)嵌頁,關(guān)閉內(nèi)嵌頁,可以通過:FrameController.addListener('frame.add',func)、FrameController.addListener('frame.remove',func) 進(jìn)行監(jiān)聽

          新開、關(guān)閉事件

          //監(jiān)聽系統(tǒng)事件
          var addLog = function(from, event, data) {
              var _old = $('#log').html().substring(0, 3000);
              $('#log').html(
                  (logTpl + _old)
                  .replace('#EVENT#', event)
                  .replace('#DATA#', JSON.stringify(data))
                  .replace('#SOURCE#', from)
              );
              console.log('event:', event, 'data:', data);
          };
           
          //監(jiān)聽系統(tǒng)事件
          FrameController.addListener('frame.remove', function(e) {
              addLog(e.frameId, e.event, e.data);
          });
          FrameController.addListener('frame.add', function(e) {
              addLog(e.frameId, e.event, e.data);
          });

          3、可以對一個(gè)事件增加多個(gè)監(jiān)聽方法,可以刪除所有監(jiān)聽方法、刪除某一個(gè)監(jiān)聽方法

          事件添加和刪除

          var logTpl = '事件:#EVENT# 來源:#SOURCE#\n數(shù)據(jù):#DATA#\n\n',
              addLog = function(from, event, data) {
                  var _old = $('#log').html().substring(0, 3000);
                  $('#log').html(
                      (logTpl + _old)
                      .replace('#EVENT#', event)
                      .replace('#DATA#', JSON.stringify(data))
                      .replace('#SOURCE#', from)
                  );
                  console.log('event:', event, 'data:', data);
              },
              msgEventListener = function(e) {
                  $('#log').html('自定義事件已經(jīng)觸發(fā),添加多次會觸發(fā)多次\n\n' + $('#log').html());
              };
           
           
          //添加自定義事件
          $('#add_custom').click(function() {
              FrameController.addListener('broadcast', msgEventListener);
          });
           
          //刪除自定義事件
          $('#remove_custom').click(function() {
              FrameController.removeListener('broadcast', msgEventListener);
          });

          更多說明請?jiān)L問:http://www.miaoqiyuan.cn/p/framecontroller-js

          瀏覽 20
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          編輯 分享
          舉報(bào)
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          編輯 分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  精品国内久 | 18禁黄网站禁片免费看 | 成人免费视频 国产免费观看 | 日本十八禁网站 | 巨乳全裸家证父 |