# 块帮助

你可以通过两种方式为块提供帮助信息:

  • 工具提示
  • 帮助链接

# 工具提示

当用户把鼠标悬停在块上时,会显示工具提示。
提示文本较长时会自动换行。

# JSON

{
  // ...,
  "tooltip": "Tooltip text."
}

# JavaScript

init: function() {
  this.setTooltip("Tooltip text.");
}

在 JavaScript 中,工具提示还可以是函数而不是固定字符串,这样可以实现动态提示。
例如可以根据下拉字段当前值返回不同提示:

Blockly.Blocks['math_arithmetic'] = {
  init: function() {
    // ...
    var thisBlock = this;
    this.setTooltip(function() {
      var mode = thisBlock.getFieldValue('OP');
      var TOOLTIPS = {
        'ADD': Blockly.Msg['MATH_ARITHMETIC_TOOLTIP_ADD'],
        'MINUS': Blockly.Msg['MATH_ARITHMETIC_TOOLTIP_MINUS'],
        'MULTIPLY': Blockly.Msg['MATH_ARITHMETIC_TOOLTIP_MULTIPLY'],
        'DIVIDE': Blockly.Msg['MATH_ARITHMETIC_TOOLTIP_DIVIDE'],
        'POWER': Blockly.Msg['MATH_ARITHMETIC_TOOLTIP_POWER']
      };
      return TOOLTIPS[mode];
    });
  }
};

# 自定义工具提示外观

你可以提供自定义渲染函数来定制工具提示外观。该函数接收两个参数:

  • 一个 div,用于渲染提示内容
  • 当前被悬停的元素

在函数体内,你可以把任意内容渲染到 div 中。
如果要读取该元素对应的提示文本,可调用:

Blockly.Tooltip.getTooltipOfObject(element);

然后把自定义函数注册给 Blockly:

Blockly.Tooltip.setCustomTooltip(yourFnHere);

可参考官方示例:Custom Tooltips demo (opens new window)

# 帮助链接

块可以绑定一个帮助页面。用户右键块后,在菜单中选择“帮助”即可打开。
如果该值为 null,菜单里不会显示“帮助”项。

# JSON

{
  // ...,
  "helpUrl": "https://en.wikipedia.org/wiki/For_loop"
}

# JavaScript

init: function() {
  // ...
  this.setHelpUrl('https://en.wikipedia.org/wiki/For_loop');
}

在 JavaScript 中,setHelpUrl 也可以接收函数,从而按当前块状态动态返回链接地址。