常见问题与解决方式

  1. 监听工具栏的某些功能使用wza2.subscribe,监听工具栏动作,Action定义可以在这里查看,例如在打开工具栏时隐藏开启按钮,关闭工具栏时重新打开

     // 订阅工具条的开关动作,并在动作执行完后执行动作
     wza2.subscribe('after', 'TOGGLE', function(action, state) {
        // 如果当前工具条的状态是关闭状态
        if (state.enable === false) {
           location.href = '/path-to-redirect';
        }
     });
    
  2. 如果想要让一个元素可读,可以通过配置进行修改,比如:

    wza2.config({
      extraElementReadingFunc: function (element) {
        var isLITag = element.tagName.toLowerCase() === 'li';
        var isInLivePage = element.ownerDocument.location.pathname.includes('/fzlm/hdjlgny/ftzb/ftzbftsl');
        if (isLITag && isInLivePage) {
          return {
            type: '',
            text: element.textContent,
          }
        }
      }
    });
    
  3. 页面如果发生了变动,导致指读/连读功能不正常,可以手动调用wza2.settleElements()方法,重新获取页面元素,比如在变更iframe的地址之后

    document.getElementById('iframe').addEventListener('load', wza2.settleElements);
    

    wza.settleElements() 重新搜集页面元素,当页面中有因ajax或用户操作改变的页面后调用(多数情况在动态修改子iframesrc时),此方法会做:

    1. 重新计算阅读区域与盲道
    2. 为当前文档,所有的iframe文档注入键盘事件与样式
    3. 备份所有元素的样式,用于配色、移动端更改文字尺寸
    4. 重新绑定所有元素节点的指读相关focusmouseover事件
    5. 重新遍历元素列表,用于连读模式
  4. 如果想要在工具栏触发动作之前或之后额外手动触发逻辑,可以使用 wza2.subscribe 订阅工具栏Action,在工具栏触发动作之前或之后额外手动触发逻辑,例如在开启/关闭时可以触发弹窗、跳转等动作
    例子:在退出工具栏后重定向到某页面

    // 订阅工具条的开关动作,并在动作执行完后执行动作
    wza2.subscribe('after', 'TOGGLE', function(action, state) {
       // 如果当前工具条的状态是关闭状态
       if (state.enable === false) {
          location.href = '/path-to-redirect';
       }
    });
    

    取消订阅Action,只传一个参数,取消触发Action之前或之后的所有订阅;传两个参数,取消所有指定Action下的订阅;传三个参数,取消指定Action下指定的订阅器