RTCDTMFSender:tonechange 事件

io error: No such file or directory (os error 2) (/home/runner/work/yari/yari/mdn/translated-content/files/zh-cn/web/api/rtcdtmfsender/index.md)

tonechange 事件会被 WebRTC API 发送给 RTCDTMFSender,以指示先前(通过调用 RTCDTMFSender.insertDTMF())排队等待发送的 DTMF 音调何时开始和结束。

要确定哪个音调开始播放,或者音调是否停止播放,请检查事件的 tone 属性的值。

此事件不可取消,也不会冒泡。

语法

在像 addEventListener() 这样的方法中使用事件名称,或设置事件处理器属性。

js
addEventListener("tonechange", (event) => {});

ontonechange = (event) => {};

事件类型

事件属性

除了 Event 的属性外,此接口还提供以下属性:

RTCDTMFToneChangeEvent.tone 只读

一个字符串,指定已开始播放的音调,或者如果上一个音调已完成播放,则为空字符串("")。

示例

此示例建立了一个处理 tonechange 事件的处理器,它会更新一个元素以在其内容中显示当前播放的音调,或者,如果所有音调都已播放,则显示字符串 "<none>"。

这可以使用 addEventListener() 来完成:

js
dtmfSender.addEventListener(
  "tonechange",
  (ev) => {
    let tone = ev.tone;
    if (tone === "") {
      tone = "&lt;none&gt;";
    }

    document.getElementById("playingTone").innerText = tone;
  },
  false,
);

你还可以直接设置 ontonechange 事件处理器属性:

js
dtmfSender.ontonechange = (ev) => {
  let tone = ev.tone;
  if (tone === "") {
    tone = "&lt;none&gt;";
  }

  document.getElementById("playingTone").innerText = tone;
};

规范

Specification
WebRTC: Real-Time Communication in Browsers
# event-RTCDTMFSender-tonechange

浏览器兼容性

BCD tables only load in the browser