【问题标题】:How do you remove the throbber from drupal 7 Ajax link?你如何从 drupal 7 Ajax 链接中删除 throbber?
【发布时间】:2011-08-31 08:29:15
【问题描述】:

我们正在使用 drupal 7 ajax 框架在页面上加载内容。单击链接时,在处理请求时,链接后会出现一个 throbber。

我找不到有关如何设置或删除 throbber 的文档。在表单中它看起来非常简单,但是使用 ajax 链接和回调菜单项我找不到任何文档。

我看到有一个 $settings 变量可以传递给 ajax_command_html 函数,但我没有看到任何关于它应该如何格式化的文档。

【问题讨论】:

标签: ajax drupal drupal-7


【解决方案1】:

当您构建表单项时,您需要定义“进度”属性:

$mycheckbox=array(
  '#type' => 'checkbox',
  '#title' => 'Load it up',
  '#ajax' => array(
      'callback' => 'ajax_example_callback', 
      'wrapper' => 'checkboxes-div',
      'effect' => 'slide', 
      'progress' => array('type' => 'none'),
    ),
);

您可以找到更多信息和示例here

【讨论】:

  • 有大量文档说明如何对 FAPI 处理的元素进行这些更改,但几乎没有关于如何处理链接的文档。
  • 确实,正如 mirzu 所提到的,如果您不使用 FAPI,drupal_pre_render_link() 是处理它的最佳方法,实际上 FAPI 调用 drupal_pre_render_link() 来构建链接,所以你基本上只是跳到重要的层,对于任何不熟悉的人,只需像您计划让 drupal 渲染的任何其他 html 元素一样格式化您的链接数组,即:array('#href'=>'my_url','#title' => 'my link title', '#ajax'=>array('callback'=>'my_ajax_callback')); 等。
【解决方案2】:

您可以通过将显示值设置为 none 来隐藏 div.ajax-progress-throbber:

.ajax-progress-throbber {
  display: none;
}

像 CSS Injector (http://drupal.org/project/css_injector) 这样的模块可能会有用。

【讨论】:

    【解决方案3】:

    我找到了自己问题的答案。要理解的重要一点是,在 Drupal 7 中有两种方式可以渲染链接。第一种是使用旧的 l() 函数,另一种是使用渲染数组。 Drupal 中的许多主题函数都使用旧样式,并且在使用时不会通过drupal_prerender_link() 运行。这就是将设置从 php 传递到 js 层的元素预处理。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多